Difficoltà con conteggio parole in C
Salve a tutti
ho scritto un programma in C per il conteggio delle parole e dei caratteri e delle righe, però ci sono dei problemi in quanto non riesco a contare le righe
Ecco il listato:
/* Conta linee parole caratteri */
#include
#define IN 1 /* all'interno di una parola */
#define OUT 2 /* all'esterno di una parola */
main(void)
{
/*char frase[255];*/
int c,n1,nw,nc,state,i;
state = OUT;
n1=nw=nc=0;
printf("Inserisci la frase :\n");
while((c= getchar()) != '\n')
{
++nc;
if (c == '\n')
++n1;
printf("Numero righe %d\n",n1);
if (c == ' ' || c=='\n' || c=='\t')
state = OUT;
else if (state == OUT)
{
state = IN;
++nw;
}
}
printf("Numero lettere. parole caratteri. %d %d %d\n",n1,nw,nc-nw+1);
printf( "Premere INVIO per uscire...");
getchar();
}
Grazie a chi mi aiuterà
Giovanni C.
ho scritto un programma in C per il conteggio delle parole e dei caratteri e delle righe, però ci sono dei problemi in quanto non riesco a contare le righe
Ecco il listato:
/* Conta linee parole caratteri */
#include
#define IN 1 /* all'interno di una parola */
#define OUT 2 /* all'esterno di una parola */
main(void)
{
/*char frase[255];*/
int c,n1,nw,nc,state,i;
state = OUT;
n1=nw=nc=0;
printf("Inserisci la frase :\n");
while((c= getchar()) != '\n')
{
++nc;
if (c == '\n')
++n1;
printf("Numero righe %d\n",n1);
if (c == ' ' || c=='\n' || c=='\t')
state = OUT;
else if (state == OUT)
{
state = IN;
++nw;
}
}
printf("Numero lettere. parole caratteri. %d %d %d\n",n1,nw,nc-nw+1);
printf( "Premere INVIO per uscire...");
getchar();
}
Grazie a chi mi aiuterà
Giovanni C.
Risposte
#include<stdio.h> main(void) { char c,risp='s'; int nc=0,np=0,nr=0; printf("\n Inserisci il testo: "); while(risp!='n') { c=getchar(); if(c!=' ' && c!='\n') nc++; if(c==' ') np++; if(c=='\n') { nr++; printf("\n Riepilogo: "); printf("\n Numero di caratteri: %d",nc); printf("\n Numero di parole: %d",np+1); printf("\n Numero di righe: %d",nr); nc=np=0; printf("\n\n\n Vuoi continuare? (s/n): "); risp=getchar(); fflush(stdin); if(risp=='s') printf("\n Inserisci il testo: "); } } }
beh se conti n1 dentro ad un while che si ferma esattamente quando lo incontra direi che non lo conterà mai
cmq ora funziona

oppure anche cosi dal file .
prova se ti piace ?
#include<stdio.h> main() { char cf = 'a'; /*carattere definito prova */ printf("\til crattere predefinito e : %c\n",cf); printf("\til crattere predefinito e : "); putc(cf, stdout); printf("\n"); FILE *fpSource; if((fpSource = fopen("righe.txt", "r")) != NULL) { int nl; /*conteggio delle righe*/ int ns; /*conteggio dei spazzi*/ int nc; /*conteggio dei caratteri*/ int np; /*conteggio delle parole*/ int stato; char ca; /* carattere */ nl = 0; ns = 0; nc = 0; np = 0; stato = 0; /*OUT = 0 IN = 1*/ while ((ca=fgetc(fpSource)) != EOF) { ++nc; if (ca == '\n') { ++nl; } if (ca == ' ') { ++ns; } if (ca == ' ' || ca == '\n' || ca == '\t') ++np; } printf("\ti caratteri sono : %d\n", nc); printf("\tle righe sono : %d\n", nl); printf("\tgli spazzi sono : %d\n", ns); printf("\tle parole sono : %d\n", np); rewind(fpSource); /*Posizionamento su uno stream*/ printf("il testo e :\n"); while ((ca=fgetc(fpSource)) != EOF) { putc(ca, stdout); } printf("\n"); rewind(fpSource); /*Posizionamento su uno stream*/ printf("il testo e :\n"); ca = 0; while ((ca=fgetc(fpSource)) != EOF) { printf("%c",ca); } } else { perror("Errore in apertura del file. \n"); } }
prova se ti piace ?