PDA

Visualizza la versione completa : [C++] Spiegazioni sull'algoritmo di Insertion Sort


raffadrummer
19-12-2011, 18:17
CIAO.. il primo post che scrivo..volevo chiedere un aiuto grossissimo..pochi giorni fa mi stato spiegato l insertion sort..e ho copiato anche il codice che stato scrittoo ma ho 2 problemi:
1) non ricordo bene come funziona e non lo capisco tramite internet
2) questo codice non funziona e vorrei che qualcuno mi desse una mano per favore

posto il codice:



#include <stdio.h>
#include <stdlib.h>
#include <limits.h> //definisce una costante INT MAX cio l intero pi grande stampabile


int main(int argc,char*argv[]){ //argc indica il numero degli elementi dell array
int dati[argc - 1],i,j,k,dato;

for(i=0;i<argc-1;i++)
dati[i]=INT_MAX;
for(i=0;i<argc-1;i++){
dato = atoi(argv[i+1]); //atoi interpreta i caratteri della stringa come un numero
j=0;
while(dato>dati[j])
j++;
for(k=argc-3;k>=j;k--)
dati[k+1]=dati[k];
dati[j]=dato;
}

}


confido in voi.grazie!

LeleFT
19-12-2011, 18:35
Originariamente inviato da raffadrummer
1) non ricordo bene come funziona e non lo capisco tramite internet
2) questo codice non funziona e vorrei che qualcuno mi desse una mano per favore


In merito al punto 1 non che si possa fare molto. Anche questo forum consultabile via interntet e non credo che gli utenti ti possano dire di pi di quello che gi c' scritto in tonnellate di pagine che si trovano facilmente con Google.

In merito al punto 2, se non specifichi COSA non funziona, non si va da nessuna parte: non puoi costringere gli utenti a copiare, incollare, compilare e testare il tuo codice solo per arrivare a scoprire una cosa che gi tu conosci e che devi specificare.

Inoltre, il codice va postato indentato e usando gli appositi tag CODE del forum

Tutto questo scritto anche nel regolamento interno (http://forum.html.it/forum/showthread.php?s=&threadid=973887).

Attendiamo le informazioni mancanti, il codice lo sistemo io.


Ciao. :ciauz:

raffadrummer
19-12-2011, 19:27
grazie leleft per le info datemi effettivamente non avevo letto il regolamento...

cimunque,,ad esempio quando eseguo il programma e inizio a inserire dei dati ad esempio 2 4 3...
mi esce il messaggio che il 2 non un dato valido.

poi nn capisco il perch dopo il primo ciclo for...c scritto dati[i]=INT_MAX

ramy89
19-12-2011, 22:47
Questa riga di codice:



int dati[argc - 1];


Dice che in pratica se non passi argomenti al programma, allora il vettore dati sar vuoto.
Invece di chiedere in input quanti numeri vuoi inserire, farteli inserire e poi ordinare il vettore, prende direttamente i numero che gli passi come parametro.
Quindi ad esempio dopo aver compilato il file,se l' eseguibile si chiama main, da terminale puoi fare:


./main 2 3 4

raffadrummer
19-12-2011, 23:25
faccio la compilazione e funzione, poi essendo in windows per ora faccio a.exe e poi mi rimette di nuovo la riga c:\users\user...etc quindi cos facendo come se non faccio niente...scusate ma sono alle prime armi con la programmazione :(

ramy89
20-12-2011, 09:05
a.exe 2 3 4

Loading