Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: masterkeyes en 20 Agosto 2015, 18:22 pm



Título: programa q cuenta cuantas palabras tienen 4 letras y termina de leer un arreglo
Publicado por: masterkeyes en 20 Agosto 2015, 18:22 pm
Código
  1. #include<stdio.h>
  2. #include<string.h>
  3. void main()
  4. {
  5. char cadena[90];
  6. int i;
  7. int contador=0;
  8. int cont=0;
  9. printf("ingrese la cadena\n");
  10. gets(cadena);
  11. for(i=0;i<(strlen(cadena));i++)
  12. {
  13. if(cadena[i]=='.')
  14. {
  15. cadena[i]='\0';
  16. }
  17. if(cadena[i]!=' ')
  18. {
  19. contador++;
  20. if(contador==4)
  21. {
  22. cont++;
  23. if(contador==4)
  24. {
  25. contador=0;
  26. }
  27.  
  28. }
  29. }
  30.  
  31. }
  32. printf ("\n%s", cadena);
  33. printf("\n palabras con 4 letras son =[%d]",cont);
  34. printf("\n");
porfin pude



Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: programa q cuenta cuantas palabras tienen 4 letras y termina de leer un arreglo
Publicado por: DarK_FirefoX en 20 Agosto 2015, 18:50 pm
Una sugerencia, en el ciclo tienes:

Código
  1. for(i=0;i<(strlen(cadena));i++)
  2. {
  3.    /*...*/
  4. }

Lo cual significa que estás calculando el tamaño de cadena utilizando strlen() en cada iteración del ciclo.

Mi sugerencia es antes del ciclo crear una variable donde calcules el tamaño de cadena y esa utilizarla en el ciclo ¿Entiendes? Vaya, por cuestiones de eficiencia temporal. Puede que no se vea en este código, pero es bueno tenerlo en cuenta.

Código
  1. /*...*/
  2. int sizeCadena = strlen(cadena);
  3. for(i=0; i < sizeCadena; i++)
  4. {
  5.    /*...*/
  6. }
  7.  

Salu2s

Añado:

PD: No revisé si el código funciona y no tiene errores en tiempo de ejecución o si el resultado es el correcto, solo quise señalar lo anterior


Título: Re: programa q cuenta cuantas palabras tienen 4 letras y termina de leer un arreglo
Publicado por: furciorifa en 23 Agosto 2015, 00:49 am
El uso de gets ya esta deprecado en C lee acerca de los peligros que conlleva utilizar esa función, mejor utiliza
Código
  1. fgets(cadena,90,stdin);


Título: Re: programa q cuenta cuantas palabras tienen 4 letras y termina de leer un arreglo
Publicado por: Mientras en 24 Agosto 2015, 00:01 am
Si ingresas "hola que tal" sale 2. :silbar:


Título: Re: programa q cuenta cuantas palabras tienen 4 letras y termina de leer un arreglo
Publicado por: geeke en 24 Agosto 2015, 02:04 am
Yo lo haría mas o menos así

 
Código
  1. #include <string.h>
  2. #include <stdio.h>
  3.  
  4. int main(void)
  5. {
  6.    char str[64];
  7.    int pos = 0, i, cant = 0;
  8.  
  9.    char *r = fgets(str, sizeof(str), stdin);
  10.    char len = strlen(str);
  11.  
  12.    if(r != NULL && str[len - 1] == '\n')
  13.       str[len - 1] = '\0';
  14.  
  15.    for (i = 0; str[i] != '\0'; i += pos + 1)
  16.        if(((pos = strcspn( str + i, " " )) == 4))
  17.            cant++;
  18.  
  19.    printf("Palabras con 4 letras son: %d\n", cant);
  20.  
  21.    return 0;
  22. }
  23.