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 !!