Salve a tutti, faccio il primo anno universitario e frequento la facolta di informatica. Mentre facevo delle esercitazioni, ho avuto un problemino.
il programma richiede questo:
Data una frase di max 10 parole ed ogni parola deve essere lunga max 100 caratteri, l'output mi deve dare le singole parole in matrice in verticale.
codice:
ESEMPIO
INPUT
io sono un ragazzo
OUTPUT
i s u r
o o n a
n g
o a
z
z
o
Ora...il programma di per se è facile se lo si struttura con le stinghe e la libreria string.h, ma io mi voglio complicare la vita...e nn chiedetemi il perchè XDDDD
Io ho pensato di leggere la frase ed inserirla carattere per carattere dentro una matrice, inserendo per ogni colonna una parola. Nel momento in cui inserisco la lettere di una parola in una colonna utilizzo un contatore che incrementa fino alla fine dell'inserimento in quella colonna, per poi passare questo valore in un vettore, che mi servirà per sapere di quanti caratteri è formata la parola. il problema è questo...non mi esce dal ciclo...potete aiutarmi?? sono 3 gg che mi ci sto spaccando la testa...ecco il codice:
codice:
#include<stdio.h>
#define cols 100
#define rows 10
int main()
{
char m[rows][cols];
int contatore[10]={0,0,0,0,0,0,0,0,0,0};
char car;
int carattere=0,parola=0,spazio=0,finito=0;
while(finito==0) {
while(spazio==0) {
printf("\a");
scanf("%c", &car);
if ((car>='a' && car<='z') || (car>='A' && car<='Z') ) {
m[carattere][parola]=car;
contatore[parola]++;
}
else {
if(car=='\n' || car==EOF) {
spazio=1;
finito=1;
} else {
spazio=1;
}
}
}
parola++;
}
for(carattere=0;carattere<rows;carattere++){
for(parola=0;parola<cols;parola++){
printf("%c", m[carattere][parola]);
}}
return 0;
}
ho utilizzato 2 while per caricare la matrice xke altrimenti mi ripeteva il ciclo fino a quando nn passava tutti gli spazi, in questo modo quando la frase è finita mi esce in automatico...facendo delle prove mi accorgo che dal primo ciclo, quello interno esce...ma è quello esterno con condizione FINITO=1 che nn esce...