programma di informatica

Messaggioda fantasofia » 22/04/2023, 17:48

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 <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include <conio.h>

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;
}
fantasofia
Starting Member
Starting Member
 
Messaggio: 1 di 4
Iscritto il: 22/04/2023, 17:33

Re: programma di informatica

Messaggioda axpgn » 22/04/2023, 19:38

Fai spostare il messaggio nella sezione "Informatica" da un moderatore
axpgn
Cannot live without
Cannot live without
 
Messaggio: 20907 di 40678
Iscritto il: 20/11/2013, 22:03

Re: programma di informatica

Messaggioda fantasofia » 23/04/2023, 14:22

scusami se te lo chiedo, ma è la mia prima volta qui, come si fa?
fantasofia
Starting Member
Starting Member
 
Messaggio: 2 di 4
Iscritto il: 22/04/2023, 17:33

Re: programma di informatica

Messaggioda axpgn » 23/04/2023, 15:44

Come ho scritto, devi chiederlo ad un moderatore, tu non puoi farlo.
axpgn
Cannot live without
Cannot live without
 
Messaggio: 20909 di 40678
Iscritto il: 20/11/2013, 22:03

Re: programma di informatica

Messaggioda DeltaEpsilon » 24/04/2023, 01:52

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.1

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?

Note

  1. Per non parlare dell'indentazione.
É così dichiarato che è celato! Non c'è nulla di più sfuggente dell'ovvio. (Sherlock Holmes)
Avatar utente
DeltaEpsilon
Average Member
Average Member
 
Messaggio: 319 di 648
Iscritto il: 08/04/2019, 18:58

Re: programma di informatica

Messaggioda fantasofia » 26/04/2023, 15:15

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
fantasofia
Starting Member
Starting Member
 
Messaggio: 3 di 4
Iscritto il: 22/04/2023, 17:33

Re: programma di informatica

Messaggioda DeltaEpsilon » 26/04/2023, 18:25

fantasofia ha scritto: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 ha scritto: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.
É così dichiarato che è celato! Non c'è nulla di più sfuggente dell'ovvio. (Sherlock Holmes)
Avatar utente
DeltaEpsilon
Average Member
Average Member
 
Messaggio: 320 di 648
Iscritto il: 08/04/2019, 18:58

Re: programma di informatica

Messaggioda fantasofia » 27/04/2023, 15:38

ho risolto usando una scanf ("%s", nomi[i]) nel for e il programma funziona, ma grazie mille dell'aiuto!
fantasofia
Starting Member
Starting Member
 
Messaggio: 4 di 4
Iscritto il: 22/04/2023, 17:33


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite