16/07/14 18:10
swet
Salve ragazzi, tra non molto dovrò affrontare un' esame sulla programmazione in C.
Il testo chiede di inserire delle sequenze di caratteri e quindi di trovare la parola più lunga tra quelle inserite.
Non bisogna usare array o funzioni stringa.
Di seguito il codice scritto da me:
Non riesco ad ottenere il numero di caratteri che contengono la parola più lunga, infatti , al termine dell' esecuzione :
invece che mostrare la parola più lunga inserita
Sicuramente è un errore stupido ma non ne esco!
Grazie
Il testo chiede di inserire delle sequenze di caratteri e quindi di trovare la parola più lunga tra quelle inserite.
Non bisogna usare array o funzioni stringa.
Di seguito il codice scritto da me:
#include <stdio.h> /*testo di esame del 16/01/2014*/ int main(){ printf("Benvenuto nel programma\n"); printf ("Inserisci una sequenza di caratteri\n"); int numerospazi,parola1,parola2,parolapiulunga; //contatori //inizializzo i contatori parolapiulunga=0; numerospazi = 0; parola1=0; parola2=0; // dichiaro la variabile che conterrà il carattere letto dalla getchar() char c ; do{ //leggo il carattere c=getchar(); //incremento il contatore di parola1 parola1++; // se viene premuta la barra spaziatrice if (c==32 && c!=10){// c!=10 serve per evitare l'echo generato dalla getchar() //incremento il contatore degli spazi numerospazi++; //routine per la seconda parola do { //leggo il carattere c=getchar(); //incremento il contatore di parola2 parola2++;} // fin quando non viene premuta nuovamente la barra spaziatrice while(c!=32 ); //incremento il contatore degli spazi numerospazi++; // confronto le parole inserite per determinare la più lunga if (parola2 > parola1 ){ if (parola2>parolapiulunga) parolapiulunga=parola2; }else if(parola1 > parola2 ){ if (parola1>parolapiulunga) parolapiulunga=parola1; } parola1=0; parola2=0; } } // L' input termina quando viene generato il segnale EOF ctrl+z while (c!=EOF); // stampo a video i risultati printf("Hai inserito %d numero di spazi\n",numerospazi); printf("La parola piu' lunga contiene %d caratteri\n",parolapiulunga); //programma terminato correttamente return 0; }
Non riesco ad ottenere il numero di caratteri che contengono la parola più lunga, infatti , al termine dell' esecuzione :
parolapiulunga=numeri apparentemente casuali.
invece che mostrare la parola più lunga inserita
Sicuramente è un errore stupido ma non ne esco!
Grazie
aaa