Nippey - Mi 21.10.09 14:19
Xentar hat folgendes geschrieben : |
Und wie sieht der Code drumherum aus?
Wie kommen die Werte ins Array? Wo kommt i her? Wo ist Array deklariert? Du solltest hier übrigens den Bezeichner ändern, da array eigentlich ein reserviertes Wort ist. |
Ja das war jetzt nur ein Beispiel. Ich habs so nicht programmiert. Ich dachte ihr braucht den Code nicht. Wollte nur wissen ob es ein Befehl gibt. Aber ich poste euch gerne die ganze AUfgabe. Vielleicht hilft es euch ja^^
Aufgabe:
Gesucht ist ein Programm merge, welches zwei (aufsteigend) sortierte Felder von (nicht
notwendig verschiedenen) integer-Zahlen zu einem sortierten Feld verschmilzt. Dabei sollen
mehrfach vorkommende Elemente auch mehrfach im Ergebnisfeld gespeichert werden. Die
beiden Felder werden von der Standardeingabe eingelesen, wobei wir voraussetzen, dass nur
sortierte Zahlenfolgen eingegeben werden. Eine Prüfung dieser Annahme ist nicht
erforderlich. Das sortierte Ergebnisfeld wird ausgegeben.
Beispiel: Feld1 enthalte die Elemente 11, 14, 18, 80, 100, Feld2 die Elemente 8, 11, 11, 17,
22, 30, 55, 70.
Feld enthält dann nach der Ausführung von merge die Elemente 8, 11, 11, 11, 14, 17, 18, 22,
30, 55, 70, 80, 100, d.h. wenn Feld2 erschöpft ist, müssen noch die restlichen Elemente aus
Feld1 nach Feld kopiert werden.
Ergänzen Sie folgende Programmvorlage zu einem vollständigen Programm:
Hinweis: Das Verschmelzen nutzt die bestehende Sortierung des Feldes aus, Sie sollen
keinen Sortier-Algorithmus implementieren.
Ein Kopieren der Feldinhalte von Feld1 und Feld2nach Feld mit anschließendem Sortieren
von Feld ist keine Lösung der Aufgabe.
Auch das komplette Kopieren eines Feldes nach Feld mit anschließendem Einsortieren der
Elemente des anderen Feldes ist keine Lösung.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| program merge (input, output);
const GRENZE1 = 5; GRENZE2 = 8; GRENZE = 13; GRENZE1PLUS1 = 6; GRENZE2PLUS1 = 9; GRENZEPLUS1 = 14; type
tIndex1 = 1..GRENZE1; tIndex2 = 1..GRENZE2; tIndex = 1..GRENZE; tIndex1Plus1 = 1..GRENZE1PLUS1; tIndex2Plus1 = 1..GRENZE2PLUS1; tIndexPlus1 = 1..GRENZEPLUS1; tFeld1 = array [tIndex1] of integer; tFeld2 = array [tIndex2] of integer; tFeld = array [tIndex] of integer; var Feld1 : tFeld1; Feld2 : tFeld2; Feld : tFeld; i : tIndex1Plus1; j : tIndex2Plus1; k : tIndexPlus1;
begin
writeln ('Bitte', GRENZE1:2, ' Werte des ersten Feldes ', 'sortiert eingeben!'); for i := 1 to GRENZE1 do readln (Feld1[i]); writeln ('Bitte', GRENZE2:2, ' Werte des zweiten Feldes ', 'sortiert eingeben!'); for j := 1 to GRENZE2 do readln (Feld2[j]);
writeln ('Das Ergebnisfeld ist:'); for k := 1 to GRENZE do write (Feld[k]: 8 ); writeln end. |
Vielleicht hilft es ja weiter: Wenn ich die Zeile Feld[k] := Feld[i] eingeb stopt das programm an der Stelle mit "Error 201 : Range check Error"
Moderiert von
Narses: Delphi-Tags hinzugefügt