Programma di informatica

boooooohhhhhhhhhhhh
Ho bisogno di aiuto con un problema di informatica. Ho già provato a cercare e consultare altre persone che hanno avuto lo stesso problema ma purtroppo sono tutti scritti con codici che io non ho ancora studiato. Devo creare un programma in C dove devo ordinare delle stringhe in ordine alfabetico. Questo è quello che sono riuscita a fare ma esce dal programma prima di farmi inserire il primo nome e non so come risolvere. (ho usato il bubble sort come ordinamento).
questo è il programma:

#include
#include
#include
#include
#include

const int MAX = 10;
const int M = 100;

int main(){

char nome[MAX + 1], ordine[M], ch;
int n, i, j, k = 0, temp;

setlocale (LC_CTYPE, "italian");

puts ("Questo programma dati n nomi, li ordina alfabrticamente. \n");

puts ("Quanti nomi vuoi inserire?");
scanf ("%d", &n);

if (n > M){
printf("Il numero inserito è troppo grande. \n");
exit(EXIT_FAILURE);
system("pause");
}

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

printf ("\nInserisci il %d° nome: ", i + 1);
ch = getch();

if (ch != '\r'){
nome[MAX + 1] = ch;
for (i = 0; i < n - 1; i++){
for (j = 0; j < n - 1 - i; j++){
if (strcmp(nome[j + 1], nome[j])<0){
ordine[k] = nome[j];
nome[j] = nome[j + 1];
nome[j + 1] = ordine[k];
}
}
}
k++;
}
}

puts("\n");
system ("pause");
return 0;
}

Risposte
axpgn
Fai spostare il messaggio nella sezione "Informatica" da un moderatore

boooooohhhhhhhhhhhh
scusami se te lo chiedo, ma è la mia prima volta qui, come si fa?

axpgn
Come ho scritto, devi chiederlo ad un moderatore, tu non puoi farlo.

DeltaEpsilon
Prima di tutto ti pregherei di racchiudere il codice tra i tag
[ code ] e [/ code] (togliendo ovviamente gli spazi) in modo tale da rendercelo più leggibile.[nota]Per non parlare dell'indentazione.[/nota]

Detto ciò, il tuo programma non ti lascia inserire la stringa del nome perchè al momento dell'invocazione della getch() hai un "a capo" di troppo nell'input buffer.

Perchè usi quella funzione? Sai cosa fa?

boooooohhhhhhhhhhhh
la funzione getch la uso perché è la funzione che mi hanno insegnato ad usare con una stringa, ho provato a cambiare anche usando la gets però mi da lo stesso problema

DeltaEpsilon
"fantasofia":
la funzione getch la uso perché è la funzione che mi hanno insegnato ad usare con una stringa


Basta leggere il nome della funzione: getch (= "get character") serve per acquisire un carattere, non una stringa.
Ti avranno insegnato ad acquisire una stringa tramite getch, ma di sicuro non è ciò che fai tu.

"fantasofia":
ho provato a cambiare anche usando la gets però mi da lo stesso problema


Per via della scanf precedente. Come ho già detto, devi prima ripulire l'input buffer.

boooooohhhhhhhhhhhh
ho risolto usando una scanf ("%s", nomi) nel for e il programma funziona, ma grazie mille dell'aiuto!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.