Sortieren durch einfügen ... Übersetzungshilfe C++ in Pascal
Verfasst: Do Dez 09, 2010 5:46 pm
Hallo zusammen,
wir arbeiten derzeit in der Schule mit PASCAL und die Hausaufgabe ist in eigenen Worten das Sortieren durch einfügen zu erklären. Schon passiert
Nun möchte ich gerne ne Zusatzaufgabe machen, also schonmal eine Prozedur dafür aufbauen (nit zum schleimen sondern ich liebe die Informatik ^^) und bräuchte dort mal Hilfe.
Ich habe ein Taschenbuch der Algorithmen (von der TU-Dortmund) und dort ist dies eigentlich ganz schön beschrieben, allerdings habe ich noch ein Problem.
Es geht darum, mit dem Sortieren per Einfügen ein Regal mit Büchern zu ordnen. Jedes Buch hat eine Zahl. Nun ist hier ein kleiner Code im Buch der soweit ich das erkenne in C++ geschrieben ist:
Die Zahlen 1-10 soll wohl die Zeile darstellen ^^ achja und >= bedeute größer oder gleich, weiss nicht wie ich das Zeichen mit ALT+Tastenkombi kriege oder ob es überhaupt geht ^^
So, nun habe ich es soweit in Pascal
Wenn ich nun den Programmablauf durchgehe habe ich aber doch etwas vergessen oder nicht? Ich habe mir hier 5 Zettel hingelegt mit Zahlen von 1-5 als Bücher in der Reichenfolge 23145. Laut meinem Programm nehme ich Buch 3 in die Hand, solang 1 > oder = 1 ist und Buch 2 > als das Buch in der Hand (Buch 3) ist mache [...] und dann steht ja unten nach der WHILE Schleife dass ich das Buch was ich in der Hand habe an der Stelle 1 wo aber noch Buch 2 ist da ich es ja nicht verschiebe hintuhen muss. Da ist ja ein fehler offensichtlich. Hat vielleicht jemand eine Idee zum vervollständigen? Mir fehlt grad ein Faden...ich komm da nicht weiter und will das gerne morgen abgeben 
Einzige Idee dir mir grad noch kommt wäre:
Habe das hier mit Zettel durchgespielt und ich finde es kommt hin. Vll mal euer Statement ^^ Bin grad bissi sehr happy weil ich den Thread eig. schon offen machen wollte grad aber die Idee bekommen hatte
Sagt mir pls dass ihr bei meinem Programm auch das richtige rauskriegt 
wir arbeiten derzeit in der Schule mit PASCAL und die Hausaufgabe ist in eigenen Worten das Sortieren durch einfügen zu erklären. Schon passiert

Ich habe ein Taschenbuch der Algorithmen (von der TU-Dortmund) und dort ist dies eigentlich ganz schön beschrieben, allerdings habe ich noch ein Problem.
Es geht darum, mit dem Sortieren per Einfügen ein Regal mit Büchern zu ordnen. Jedes Buch hat eine Zahl. Nun ist hier ein kleiner Code im Buch der soweit ich das erkenne in C++ geschrieben ist:
Code: Alles auswählen
1 Gegeben: A:Feld mit n Einträgen;
2 for i:=2 to n do
// ordne Buch an Position i durch Verschiebung ein
3 Hand:=A[j]; //nimm aktuelles Buch in die Hand
4 j:=i-1;
// solange korrekte Position des aktuellen Buchs noch nicht erreicht
5 while j>=1 annd A[j]>Hand do
6 A[j+1]:=A[j]; // schiebe Buch an die Position j nach rechts
7 j:=j-1;
8 endwhile
9 A[j]:=Hand // füge aktuelles Buch an der richtigen Stelle ein
10 endfor
So, nun habe ich es soweit in Pascal
Code: Alles auswählen
PROGRAM hausaufgabe;
CONS n=5 (*den Wert 5 hab ich mir jetzt einfach mal so genommen*);
VAR A:ARRAY [1..n] OF INTEGER;
hand,i,j:INTEGER;
PROCEDURE sort;
BEGIN
i:=2;
hand:=A[i];
j:=i-1;
WHILE j>=1 AND A[j]>hand DO
BEGIN
A[j+1]:=A[j];
j:=j-1;
END
A[j]:=hand;
END;
BEGIN
sort;
END.

Einzige Idee dir mir grad noch kommt wäre:
Code: Alles auswählen
PROGRAM hausaufgaben_aufgabeb;
CONS n=20;
VAR A:ARRAY [1..n] OF INTEGER;
j,i,:INTEGER;
PROCEDURE insertion_sort;
BEGIN
j:=1;
i:=2;
REPEAT
IF A[i]<A[j]
THEN BEGIN
REPEAT
IF A[i]<A[j]
THEN BEGIN
hand:=A[j];
A[j]:=A[i];
A[i]:=hand
j:=j-1;
i:=i-1;
END
ELSE BEGIN
j=0;
i=1;
END
UNTIL j=0 AND i=1;
END
j:=j+1;
i:=i+1;
UNTIL j=n-1 AND i=n;
END;
BEGIN
insertion_sort;
END.

