Problema con l'ordinamento di array

di il
1 risposte

Problema con l'ordinamento di array

Ciao a tutti ragazzi,
sono nuovo del forum e quindi volevo presentarmi: sono uno studente di ingegneria , tra poco dovrò affrontare l'esame sul linguaggio C e quindi volevo un po' di aiuto e per fortuna ho trovato questo forum

L'esercizio dice:

Dato un array di caratteri non ordinato,
ordinarlo in ordine crescente e stamparlo a video.

L'esercizio l'ho capito bene, solo una cosa non mi e' chiara..

L'ho risolto facendo in modo che se il primo valore è maggiore di quello dopo, li scambio.

vi scrivo il codice C :

#include <stdio.h>

# define LUNG 5

int main () {

int i,j; //contatori
char scambio;
char a[LUNG];

for(i=0;i<LUNG;i++) {

printf("\ninserisci la prossima lettera: ");
scanf("%c",&a);
getchar();
}

printf("\n\n caratteri inseriti: ");

for(i=0;i<LUNG;i++) {

printf("%2c", a);
}

for(i=0;i<LUNG-1;i++) {

for(j=0;j<LUNG-1;j++) {

if(a[j]>a[j+1]) {

scambio=a[j];
a[j]=a[j+1];
a[j+1]=scambio;
}
}
}


printf("\n\nvalori ordinati: \n");

for(i=0;i<LUNG;i++) {

printf("%c\n",a);
}



return 0;


}


Ho dubbi solo sui cicli for annidati..

mettiamo per esempio che l'utente inserisca: c , b , a;

c>b ? si allora entro nel ciclo

scambio diventa c ---> ok nessun problema

c diventa b ---> quindi adesso dovrebbe essere b , b , a

b diventa scambio.. quindi c --> quindi adesso dovrebbe essere c , c ,a ???

invece a me li scambia perfettamente e diventa b , c ,a .. come mai?


dove sbaglio a pensare?

ovviamente la soluzione l'ho presa dalle soluzioni ..

grazie dell'aiuto !!

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte