hier die komplette Aufgabe:
Beim Umzug eines Informatik-Instituts ist eines der Programme beschädigt worden. Glücklicherweise
ist nur an einer Stelle (.......) der Ausdruck für eine Bedingung verlorengangen. Das
Programm sieht nun so aus:
INIT(S), i=0
Solange (i<Laenge(L)):
{
Solange ((nicht EMPTY(S)) und (.......)): { Ausgabe(TOP(S)), POP(S) }
PUSH(S,L)
i=i+1
}
Solange (nicht EMPTY(S)): { Ausgabe(TOP(S), POP(S)) }
Ende
(a) Welche Bedingung steht sinnvollerweise statt ......., damit das Programm die Elemente
aus der Eingabe möglichst gut in aufsteigender Reihenfolge sortiert ausgibt? Insbesondere soll das reparierte Programm bei Eingabe von (5,4,3,2,1) als Ausgabe (1,2,3,4,5) liefern. Auf (1,5,4,3,2,6) soll mit (1,2,3,4,5,6) geantwortet werden. Zeigen Sie, wie das reparierte Programm auf diesen zwei Beispielen arbeitet, indem Sie den Stapel direkt vor und direkt nach jedem PUSH explizit angeben.
( Geben Sie eine möglichst kurze Liste an, die vom Programm nicht korrekt sortiert wird.
Sehe ich es dann richtig, dass die Aufgabe gar nicht lösbar ist, sobald PUSH einmal ausgeführt worden ist, da ja dann eine Zahl doppelt da ist?
Grüße
stud