Cosa sbaglio???....
Ragazzi ho un problema con questo esercizio in linguaggio C cosa sbaglio???
/*Scrivere una funzione in linguaggio C che utilizzando l'algoritmo del Bubble sort ordini*
*in modo decrescente un vettore di stringhe in funzione del valore del codice ASCII dell'*
*ultimo carattere.*/
#include
void bubble(char a[10]);
int main(void)
{
char a[10];
int i;
for(i = 0; i < 9; ++i){
scanf("%c", &a);
}
bubble(a);
return 0;
}
void bubble(char a[10])
{
int k, j, tmp;
if(a[k] <= 126 && a[k] >=0){
for (k = 0; k < 9; ++k)
for(j = 9; j > k; --j){
if(a[j - 1] > a[j])
tmp = a[j - 1];
a[j - 1] = a[j];
a[j] = tmp;
}
}
for(k = 0; k < 10; ++k)
printf("%c", a[k]);
return ;
}
/*Scrivere una funzione in linguaggio C che utilizzando l'algoritmo del Bubble sort ordini*
*in modo decrescente un vettore di stringhe in funzione del valore del codice ASCII dell'*
*ultimo carattere.*/
#include
void bubble(char a[10]);
int main(void)
{
char a[10];
int i;
for(i = 0; i < 9; ++i){
scanf("%c", &a);
}
bubble(a);
return 0;
}
void bubble(char a[10])
{
int k, j, tmp;
if(a[k] <= 126 && a[k] >=0){
for (k = 0; k < 9; ++k)
for(j = 9; j > k; --j){
if(a[j - 1] > a[j])
tmp = a[j - 1];
a[j - 1] = a[j];
a[j] = tmp;
}
}
for(k = 0; k < 10; ++k)
printf("%c", a[k]);
return ;
}
Risposte
"fk16":
Ragazzi ho un problema con questo esercizio in linguaggio C cosa sbaglio???
Avresti fatto meglio a dirci quale era il problema che rilevavi, cosi' era piu' facile aiutarti...
Ad ogni modo:
for(i = 0; i < 9; ++i){ scanf("%c", &a[i]); }
il ciclo for si arresta una iterazione prima di quanto dovrebbe, inoltre, scanf non e' il massimo per fare quello che vuoi fare tu. Ma ci sono problemi maggiori piu' giu'.
void bubble(char a[10]) { int k, j, tmp; if(a[k] <= 126 && a[k] >=0){ for (k = 0; k < 9; ++k) for(j = 9; j > k; --j){ if(a[j - 1] > a[j]) // MANCANO LE PARENTESI GRAFFE !!! tmp = a[j - 1]; // INIZIO BLOCCO a[j - 1] = a[j]; a[j] = tmp; // FINE BLOCCO } } for(k = 0; k < 10; ++k) printf("%c", a[k]); return ; }
La variabile k non e' inizializzata quando viene usata, non si capisce bene cosa debba controllare quella if, visto che semmai dovrebbe controllare tutti gli elementi del vettore, inoltre nel ciclo piu' interno dopo la if mancano le parentesi graffe: nel blocco eseguito nel caso 'then' devono essere racchiuse tutte e tre le istruzioni seguenti (che scambiano le due lettere).
Poi credo (ma e' secondario) che sia meglio dichiarare bubble come
void bubble(char *a)
ma magari mi sbaglio.
PS E' meglio usare i tag "code" per il codice...