folgendes problem ich hab 3 Pascal Programme : die alle gehen :
nun soll ich das in 1 Programm machen ... wobei ich die einzelen sachen daraus auswähl...
geht darum das ein Array von Integer zahlen zufällig eingelesen wird und dann nach 3 verfahren sortiert werden soll : ( die einzlen proggys sind lauffähig !)
hier mal die 3 sachen :
PROGRAM feld_sortieren; USES wincrt; CONST n = 10; TYPE ft = ARRAY [1..n] OF integer; VAR feld:ft; PROCEDURE erzeuge (VAR efeld:ft); VAR i:integer; BEGIN FOR i:=1 TO n DO efeld[i]:=random(100)+1; END; PROCEDURE sortieren_dir_ausw(VAR sfeld:ft); VAR i,pos,min,x:integer; BEGIN FOR x:=1 TO n DO BEGIN min:=feld[x]; pos:=x; FOR i:=x+1 TO n DO IF feld[i] < min THEN BEGIN min:=feld[i]; pos:=i; feld[i]:=feld[x]; feld[x]:=min; END; END; END; PROCEDURE ausgabe(afeld:ft); VAR i:integer; BEGIN FOR i:=1 TO n DO writeln(afeld[i]:8); END; BEGIN randomize; clrscr; erzeuge(feld); ausgabe(feld); writeln; writeln; sortieren_dir_ausw(feld); ausgabe(feld); readln; END.
ROGRAM sort_dir_einfg; {direktes Einf?gen} USES wincrt; CONST n = 10; TYPE ft = ARRAY [1..n] OF integer; VAR feld:ft; PROCEDURE erzeuge (VAR efeld:ft); VAR i:integer; BEGIN FOR i:=1 TO n DO efeld[i]:=random(100)+1; END; PROCEDURE sortieren_dir_einfg(VAR sfeld:ft); VAR i,j,rette :integer; BEGIN FOR i:=2 TO n DO BEGIN rette:=sfeld[i]; j:=i-1; WHILE (( j >= 1) AND (sfeld[j] > rette)) DO BEGIN sfeld[j+1]:=sfeld[j]; j:=j-1; END; sfeld[j+1]:=rette; END; END; PROCEDURE ausgabe(afeld:ft); VAR i:integer; BEGIN FOR i:=1 TO n DO writeln(afeld[i]:8); END; BEGIN randomize; clrscr; erzeuge(feld); writeln('Unsortiertes Feld:'); ausgabe(feld); writeln; writeln; sortieren_dir_einfg(feld); writeln('Sortiertes Feld:'); ausgabe(feld); readln; END.
PROGRAM quicksortx; USES crt; CONST n=10; TYPE zahlen_feld=ARRAY[1..n] OF integer; VAR a :zahlen_feld; i :integer; Procedure quicksort(ug,og :integer); VAR li,re,test,hilf :integer; BEGIN IF ug <= og THEN BEGIN test:=a[(ug+og) DIV 2]; li:=ug; re:=og; WHILE li <= re DO BEGIN WHILE a[li] < test DO inc(li); WHILE a[re] >= test DO dec(re); IF li <= re THEN BEGIN hilf:=a[li]; a[li]:=a[re]; a[re]:=hilf; inc(li); dec(re); END; END; quicksort(ug,re); quicksort(li,og); END; END; BEGIN (*OF HP*) clrscr; randomize; FOR i:=1 TO n DO a[i]:=random(1000)+1; FOR i:=1 TO n DO write(a[i]:4); quicksort(1,n); writeln; FOR i:=1 TO n DO write(a[i]:4); readln; END.
also das neue programm soll en Menü ham wo ich das auswähl wie sortiert wird...
danke für hilfe