Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - help me
Forum - Pascal - help me

Avatar
boostareo (Normal User)
Newbie


Messaggi: 14
Iscritto: 13/12/2012

Segnala al moderatore
Postato alle 17:34
Venerdì, 21/12/2012
ciao!
come potrei fare un programma così:
richieder ad un utente di inserire un numero n di elementi di un vettore ( numero naturale max 100)
costituito da numeri reali!
inserire gli n numeri reali di valore diverso e ordinare il vettore stampando i valori del vettore a video!
la procedura di ordinamento consiste nell'utilizzare il metodo dell'inserimento (inseration sort) seguenti passaggi
ne indicano il funzionamento.

                             5  2  4  6  1  3
                             2  5  4  6  1  3
                             2  4  5  6  1  3
                             2  4  5  6  1  3
                             1  2  3  4  5  6

guardate come varia la posizione dei numeri!
ciao grazie! :k:
                            

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 9:40
Sabato, 22/12/2012
Dove trovi difficoltà?  (Posta il codice del tuo tentativo.)

L' algoritmo inseration sort proposto nel tuo esempio, non sembra avere nessuna logica.
Vedi questo esempio: http://it.wikipedia.org/wiki/Insertion_sort

Ecco un esempio di come implementare il codice:
Codice sorgente - presumibilmente Delphi

  1. PROCEDURE InsertionSort(var Menge: MengeRealTyp; Links, Rechts: INTEGER;)
  2. VAR
  3.  Index,Einfuegeposition: INTEGER;
  4.  Zwischenspeicher:real;
  5. BEGIN
  6.   FOR Index := Links + 1 TO Rechts DO
  7.   BEGIN
  8.     Zwischenspeicher := Menge[Index];
  9.     Einfuegeposition := Index;
  10.     WHILE ((Menge[Einfugeposition - 1] > Zwischenspeicher) AND
  11.            (Einfuegeposition > Links)) DO
  12.     BEGIN
  13.       Menge[Einfuegeposition] := Menge[Einfuegeposition - 1];
  14.       Einfuegeposition := Einfuegeposition - 1;
  15.     END;
  16.     Menge[Einfuegeposition] := Zwischenspeicher;
  17.   END;
  18. END;


Ultima modifica effettuata da Poggi Marco il 22/12/2012 alle 9:52
PM Quote
Avatar
boostareo (Normal User)
Newbie


Messaggi: 14
Iscritto: 13/12/2012

Segnala al moderatore
Postato alle 18:30
Sabato, 22/12/2012
io non ho neancora visto le procedure forse è per quello che non lo capisco!
grazie per il link, ora mi vedo le procedure e provo a capire il tuo
grazie ancora

PM Quote
Avatar
boostareo (Normal User)
Newbie


Messaggi: 14
Iscritto: 13/12/2012

Segnala al moderatore
Postato alle 19:00
Sabato, 22/12/2012
ma si riesce a fare senza procedure?

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 19:36
Sabato, 22/12/2012
Si, è possibile farlo anche senza sottoprogrammi. Basta dichiarare le variabili locali, come globali.

PM Quote
Avatar
boostareo (Normal User)
Newbie


Messaggi: 14
Iscritto: 13/12/2012

Segnala al moderatore
Postato alle 16:15
Domenica, 23/12/2012
non capisco ancora!

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 19:51
Domenica, 23/12/2012
Riporto la procedura come se fosse un unico programma:
Codice sorgente - presumibilmente Delphi

  1. PROGRAM InsertionSort;
  2. var Menge: array[1..20] of real;
  3.      Links, Rechts, Index,Einfuegeposition: INTEGER;
  4.      Zwischenspeicher:real;
  5.  
  6. BEGIN
  7.   Rechts:=20;
  8.   links:=1;
  9.   (* ordinamento del vettore del vettore *)
  10.   FOR Index := Links + 1 TO Rechts DO
  11.   BEGIN
  12.     Zwischenspeicher := Menge[Index];
  13.     Einfuegeposition := Index;
  14.     WHILE ((Menge[Einfugeposition - 1] > Zwischenspeicher) AND
  15.            (Einfuegeposition > Links)) DO
  16.     BEGIN
  17.       Menge[Einfuegeposition] := Menge[Einfuegeposition - 1];
  18.       Einfuegeposition := Einfuegeposition - 1;
  19.     END;
  20.     Menge[Einfuegeposition] := Zwischenspeicher;
  21.   END;
  22. END.



Testo quotato

Postato originariamente da boostareo:non capisco ancora!


Posta il tuo tentativo.

PM Quote
Avatar
boostareo (Normal User)
Newbie


Messaggi: 14
Iscritto: 13/12/2012

Segnala al moderatore
Postato alle 18:08
Domenica, 13/01/2013
grazie mille dell'aiuto! ho fatto alla fine!

Ultima modifica effettuata da boostareo il 13/01/2013 alle 18:09
PM Quote