C/Visual C - Contador de palabras

 
Vista:

Contador de palabras

Publicado por Rizz (1 intervención) el 08/03/2010 12:24:05
Hola, estoy realizando un programa que cuenta las palabras de un texto finalizado en $, pero no funciona bien, me peta y no descubro el porque, a ver si alguien me puede ayudar!! Gracias de antemano :) Ahi va el codigo:

#include<stdio.h>
#define LLARG 100
int main (void)
{
int taula[LLARG], paraules=0, i=0;
char c;

while(c!='$')
{
while(c!=' ' && c!='$' && i<LLARG)
{
taula[i]=c;
scanf("%c",&c);
printf("i1:%d \n",i);
i++;
}
paraules++;
printf("i2:%c \n",c);
}
printf("%d",paraules);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Contador de palabras

Publicado por eduardo (82 intervenciones) el 20/03/2010 17:28:55
Hola.
Considerando que una palabra puede estar separada de otra por uno o más caracteres de espaciado (espacios blancos o tabuladores), el siguiente programa cuenta las palabras contenidas en una cadena ingresada por teclado.
Salu2.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define TAM 80

#define IN 1 /* en una palabra */
#define OUT 0 /* fuera de una palabra */

long cuentaPalabras( const char s[] ); /* prototipo */

/* la función main comienza la ejecución del programa */
int main( void )
{
char cadena[TAM];
int continuar = ' '; /* bandera de continuación */

/* ciclo de control del programa */
while ( continuar != 27 ) {
system( "cls" );
printf( " Este programa cuenta el numero de palabras de una cadena\n\n" );
printf( " Deme cadena: " );
gets( cadena );

printf( "\n\t Su cadena tiene %d palabras\n", cuentaPalabras( cadena ) );

printf( "\n\n\n\t\t ESC <Salir>: " );
continuar = getch();
}

return 0; /* indicar terminación exitosa */

} /* fin de main */

/* IMPLEMENTACIÓN DE FUNCIÓN */

/* devuelve el número de palabras contenidas en la cadena */
long cuentaPalabras( const char s[] )
{
register int i;
register long palabras = 0L;
int estado;

/* para cada caracter de la linea de texto */
for ( i = 0; s[i]; ++i ) {

/* si el caracter actual de la linea de texto es un espacio o un tabulador */
if ( s[i] == ' ' || s[i] == '\t' )

/* establecer el indicador como Fuera de una palabra */
estado = OUT;

else

/* establecer el indicador como Dentro de una palabra */
estado = IN;

/* Si estamos en una palabra y el siguiente caracter es un espacio o un tabulador o el final de la cadena */
if ( estado == IN && (s[i + 1] == ' ' || s[i + 1] == '\t' || s[i + 1] == '\0' ) )

/* contabilizar */
++palabras;

} /* fin de for */

return palabras;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar