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 ?