PDA

View Full Version : [C] Algoritmo di ordinamento (selezione)


Bestseller
21-10-2010, 20:53
Ho un problema con la programmazione in C.
Sto creando un programma che dato un array a[10] contenente 10 numeri casuali in ordine casuale sia in grado di ordinarli in un secondo array b[10]. Ho già scritto il codice, ma, dato che il risultato non è un array ordinato, evidentemente c'è un errore che non sono ancora riuscito a trovare. So benissimo che esistono algoritmi già scritti e migliori del mio, ma il professore ha detto che non ci chiede di scrivere il programma migliore ma almeno un programma che svolga l'operazione in modo corretto.
Il codice è il seguente:

#include <stdio.h>

main(){
int a[10],b[10];
int j,k,i,m;
<loop per inserire i dieci valori dell'array A>
for(j=0;j<10;j++){
a[0]=k;
for(i=0;i<10;i++){
if((k>a[i+1])&&(a[i+1]!=m)){k=a[i+1];}
}
k=b[j];
k=m;
}
<loop per mostrare a schermo i dieci valori dell'array ordinato B>
}

Dove ho sbagliato? Grazie.

Teo@Unix
21-10-2010, 21:00
così dopo un minuto noto che usi k senza inizializzarlo... oppure hai tralasciato del codice? Postalo tutto se puoi.

Bestseller
21-10-2010, 21:02
Codice completo:

#include <stdio.h>

main(){
int a[10],b[10];
int x,j,k,i,m,n;
for(x=0;x<10;x++){
printf("Inserisci il valore di a[%d]",x);
scanf("%d",&a[x]);
}
for(j=0;j<10;j++){
a[0]=k;
for(i=0;i<10;i++){
if((k>a[i+1])&&(a[i+1]!=m)){k=a[i+1];}
}
k=b[j];
k=m;
}
printf("Array ordinato:");
for(n=1;n<10;n++){
printf("%d",b[n]);
}
}

Teo@Unix
21-10-2010, 21:17
if((k>a[i+1])&&(a[i+1]!=m)){k=a[i+1];}


non ho controllato il codice, ma se usi k senza inizializzarlo, in un test, ha poco senso, prova a rivedere facendo il debug, ti accorgi dell'errore sicuramente....

anche perchè va a coprirti il valore che hai richiesto in input... in a[0]..

Bestseller
21-10-2010, 21:49
Grazie, ti ringrazio per la tua disponibilità.
Ora lo inizializzo e vedo che succede.