Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354

    [Pascal]ordire dei numeri

    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

  2. #2
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    penso che per il primo esempio potresti anche ordinare 3 interi ma per n numeri devi per forza usare gli array.

    ti risulta???

  3. #3
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    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.

  4. #4
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Grazie, mi siete stati molto di aiuto! il problema è risolto!!!!

  5. #5
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    Se vuoi postare il codice così magari ti ottimizziamo i sorgenti e il tuo prof ti da un bel 9 e mezzo

  6. #6
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    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...

  7. #7
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    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!

  8. #8
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    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.

  9. #9
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    grazie, ma ho un piccolo problemino ad creare quello di N.

    come posso creare un array di n dimensioni?

  10. #10
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.