Ho creato un programma che conta le parole in input e dispone in una matrice ( che finalmente sono riuscito a creare) tanti asterischi quante sono le parole in ingresso, e il progrmma funziona:
codice:
codice:#include<stdio.h> #include <math.h> #define R 12 #define C 8 char matrix[R][C]; int getline(char[]); int contaparole(char[]); void crea(); void stampa(); void illumina(int,int); void trovaipunti (int); main() { int k; char vett[10000]; printf("Inserisci una frase :\n"); getline(vett); k=contaparole(vett); printf("Il numero di parole che hai inserito corrispondera' al numero di asterischi..\n"); crea(); trovaipunti(k); stampa(); getch(); } void crea() { int r,c; for(r=0;r<R;r++) for(c=0;c<C;c++) matrix[r][c]='.'; } void illumina(int x,int y) { matrix[x][y]='*'; } void stampa() { int c,r; for(r=0;r<R;r++) { for(c=0;c<C;c++) printf("%c\t",matrix[r][c]); printf("\n"); } } int getline (char vettore[]){ int c,i=0; while((c=getchar())!= '\n') vettore [i++]=c; if (c=='\n') vettore[i++]=c; vettore[i]= '\0'; return i; } int contaparole(char line[]) { int a=0,b=1,i=0,stato,parola=0; stato=a; while(line[i]!=EOF) { if(line[i]!=' ' && stato==a) { i++; parola++; stato=b; } if(line[i]==' '&& stato==b) { stato=a; i++; } else i++; } return parola; } void trovaipunti (int k) { double t,o,c,r; int h; t=k/C; o=floor(t); if(k<=C) { for(r=0;r<=0;r++) { for(c=0;c<k;c++) illumina(r,c); } } if(k>C) { for(r=0,h=0;r<=o;r++,h++) { for(c=0;c<C && h<=k;c++,h++) illumina(r,c); } } }
Ho dunque deciso di disporre gli asterischi, non piu' in riga ma in colonna.. Stavolta, se inserisco meno parole del numero di righe, o al piu' uguali, funziona.. se inserisco piu' parole non funziona..
Non riesco a trovare l'errore:
codice:#include<stdio.h> #include <math.h> #define R 12 #define C 8 char matrix[R][C]; int getline(char[]); //in colonna int contaparole(char[]); void crea(); void stampa(); void illumina(int,int); void trovaipunti (int); main() { int k; char vett[10000]; printf("Inserisci una frase :\n"); getline(vett); k=contaparole(vett); printf("Il numero di parole che hai inserito corrispondera' al numero di asterischi..\n"); crea(); trovaipunti(k); stampa(); getch(); } void crea() { int r,c; for(r=0;r<R;r++) for(c=0;c<C;c++) matrix[r][c]='.'; } void illumina(int x,int y) { matrix[x][y]='*'; } void stampa() { int c,r; for(r=0;r<R;r++) { for(c=0;c<C;c++) printf("%c\t",matrix[r][c]); printf("\n"); } } int getline (char vettore[]){ int c,i=0; while((c=getchar())!= '\n') vettore [i++]=c; if (c=='\n') vettore[i++]=c; vettore[i]= '\0'; return i; } int contaparole(char line[]) { int a=0,b=1,i=0,stato,parola=0; stato=a; while(line[i]!=EOF) { if(line[i]!=' ' && stato==a) { i++; parola++; stato=b; } if(line[i]==' '&& stato==b) { stato=a; i++; } else i++; } return parola; } void trovaipunti (int k) { double t,o,c,r; int h; t=k/R; o=floor(t); if(k<=R) { for(r=0;r<k;r++) { for(c=0;c<=0;c++) illumina(r,c); } } if(k>R) { for(r=0,h=0;r<=R;r++,h++) { for(c=0;c<=o && h<=k;c++,h++) illumina(r,c); } } }

Rispondi quotando