Il mio problema è il seguente: devo ordinare prima 3 numeri da input e poi n numeri da input
cioè devo prendere i numeri da input e poi riscriverli in ordine crescente
Il mio problema è il seguente: devo ordinare prima 3 numeri da input e poi n numeri da input
cioè devo prendere i numeri da input e poi riscriverli in ordine crescente
penso che per il primo esempio potresti anche ordinare 3 interi ma per n numeri devi per forza usare gli array.
ti risulta???
memorizzi i numeri in un vettore di n elementi.
poi ordini il vettore utilizzando uno dei classici algoritmi di ordinamento di vettori: bubblesort, quicksort, mergesort, heapsort...
se n'è parlato anche recentemente sul forum di programmazione, fai una ricerca e trovi anche il codice
Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.
Grazie, mi siete stati molto di aiuto! il problema è risolto!!!!![]()
![]()
Se vuoi postare il codice così magari ti ottimizziamo i sorgenti e il tuo prof ti da un bel 9 e mezzo![]()
Ho fatto solo quello di 3:
codice:PROGRAM Ocresciente; USES crt; VAR n:array[1..3] of real; i,j:integer; tmp:real; BEGIN clrscr; i:=1; REPEAT write('Inserisci il ',i,' mo numero: '); readln(n[i]); i:=i+1; UNTIL((i-1)=3); IF(n[1]=n[2])or(n[1]=n[3])or(n[2]=n[3])THEN writeln('Errore: 2 o 3 dei numeri inseriti sono uguali') ELSE FOR i:=0 TO 2 DO FOR j:=(i+1) TO 3 DO IF(n[j]<n[i])THEN BEGIN tmp:=n[i]; n[i]:=n[j]; n[j]:=tmp; END; i:=1; writeln(' '); REPEAT writeln('Il: ',i,' e'': ',n[i]:5:2); i:=i+1; UNTIL((i-1)=3); writeln(' '); readln; END.
l'altro è in fase di costruzione, ma una valta capito l'algoritmo...
Effettivamente ti confesso una cosa:
Io nella guida del pascal ho trovato un comando "exit" molto simile ad un comando c, credendo che la prof testasse i programmi al PC lo ho messo in una verifica: è risultato l'unico errore in una verifica da 8/5!!!
E penso pure che compiti come questo non siano fattibili da una 3 liceo Scientifico Tecnologico!
ho modificato il programma in modo che se cambi la costante N e ci metti un valore + grande o piccolo ordina lo stesso:
codice:PROGRAM Ordine_cresciente; USES crt; CONST n=7; {se vuoi ordinare 100 numeri metti n=100 :) } VAR a: array[1..n] of real; i,j: integer; tmp: real; BEGIN clrscr; i:=1; REPEAT write('Inserisci il ',i,'ø numero: '); readln(a[i]); i:=i+1; UNTIL ((i-1)=n); FOR i:=1 TO (n-1) DO {occhio all'N-1} FOR j:=i+1 TO n DO IF (a[j]<a[i]) THEN BEGIN tmp:=a[i]; a[i]:=a[j]; a[j]:=tmp; END; i:=1; writeln; REPEAT writeln('Il ',i,'ø e'': ',a[i]:1:2); i:=i+1; UNTIL ((i-1)=n); readln; END.
grazie, ma ho un piccolo problemino ad creare quello di N.
come posso creare un array di n dimensioni?
Originariamente inviato da cso
ho modificato il programma in modo che se cambi la costante N e ci metti un valore + grande o piccolo ordina lo stesso:
codice:PROGRAM Ordine_cresciente; USES crt; CONST n=7; {se vuoi ordinare 100 numeri metti n=100 :) } VAR a: array[1..n] of real; i,j: integer; tmp: real; BEGIN clrscr; i:=1; REPEAT write('Inserisci il ',i,'ø numero: '); readln(a[i]); i:=i+1; UNTIL ((i-1)=n); FOR i:=1 TO (n-1) DO {occhio all'N-1} FOR j:=i+1 TO n DO IF (a[j]<a[i]) THEN BEGIN tmp:=a[i]; a[i]:=a[j]; a[j]:=tmp; END; i:=1; writeln; REPEAT writeln('Il ',i,'ø e'': ',a[i]:1:2); i:=i+1; UNTIL ((i-1)=n); readln; END.![]()