Informatik: Pascal Programm HA

  • Hallo.
    Ich habe aus schulischen Zwecken ein Programm geschrieben, welches diese Funktion hat:
    Wir haben 100 Gefängniszellen (als ein 100er array) welche vorerst geschlossen sind.
    Nun werden sie geöffnet und geschlossen: Am ersten Tag wird jede Tür geöffnet, am zweiten wird jede zweite Tür geschlossen, am dritten wird jede dritte überprüft, offene werden geschlossen, geschlossene werden geöffnet.Dies geht so weiter bis 100.
    Nach 100 Tagen wird angegeben welche Zellen nun noch offen sind.
    Mein Programm führt nun aus, gibt jedoch statt denn Zellen die geöffnet sind alle Zellen von 1-100 aus.
    Nach mehreren Stunden Beschäftigung würde ich nun gerne wissen, wo denn der Fehler liegt, da ich ihn einfach nicht finden kann. Das Programm sollte in der Form so bestehen bleiben, nur das gröbste Problem, welches das richtige Ergebnis verhindert, genannt werden. Ich danke im Voraus!

    (1 steht in dem Programm für geschlossen, 2 für offen)

    program gefaengnis;
    var p,j,x,y,i,u:integer;
    zahl:array[1..100] of integer;
    begin
    x:=1;
    y:=1;
    p:=1;
    for j:=1 to 100 do (hier stelle ich zunächst alle Türen auf geschlossen)
    begin
    zahl[p]:=1;
    p:=p+1;
    end;
    for i:=1 to 100 do
    begin
    while x<=100 do (diese Wiederholungsschleifen sorgen für das Öffnen und
    begin Schließen der Türen, wie im Text beschrieben)
    if zahl[x]=1 then
    zahl[x]:=2
    else
    zahl[x]:=1;
    x:=x+y;
    end;
    y:=y+1;
    end;
    for u:=1 to 100 do (Diese Schleife sorgt für die Ausgabe der Zellennummern die auf
    begin offen (d.h. der Zahl 2) stehen)
    if zahl[u]=2 then
    writeln(u);
    readln;
    end;
    end.


    Was ich ausgegeben bekomme:
    1
    2
    3
    4
    5.....100

    Ich bitte inständigst um Hilfe!

  • Nach weiteren Stunden bin ich mittlerweile zu der Lösung gekommen, ich bitte um Entschuldigung, ich wusste tatsächlich nicht mehr weiter^^.

  • Kein Grund, sich zu entschuldigen, es gab halt nur in der kurzen Zeit niemanden, der helfen konnte oder wollte. ;)

    Wie wäre es, wenn Du Deinen Lösungsansatz noch bekannt geben würdest für andere mit dem selben Problem?

    Ich weiß nicht, wer oder was ich bin. Ich weiß nur, dass ich tue, was ich tun muß, nicht mehr und nicht weniger.

    Zitat aus "Gildenhaus Thendara", Dritter Teil, Ende 3. Kapitel