Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: vivianfes en 25 Marzo 2015, 03:07 am



Título: contador
Publicado por: vivianfes en 25 Marzo 2015, 03:07 am
hola tengo un problema con mi codigo necesito que imprima cuantas palabras hay en un arreglo bidimensional interactivo, me imprime bien cuantos caracteres hay por fila pero en palabras solo imprime 0, no se si haya alguna funcion para contar palabras o necesite modificar el codigo
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define T 3
  4. #define B 30
  5. void carga(char[][B]);
  6. void cuenta(char[][B],int[]);
  7. int palabras(char[][B]);
  8. void imprime(int[],int );
  9.  
  10. int main(int argc, char *argv[]) {
  11. char mosco[T][B];
  12. int cont,oso[T];
  13. carga(mosco);
  14. cuenta(mosco,oso);
  15. palabras(mosco);
  16. imprime(oso,cont);
  17. return 0;
  18. }
  19. void carga(char mosco[][B])
  20. {
  21. int i;
  22. for(i=0;i<T;i++)
  23. {
  24. gets(mosco[i]);
  25. }
  26. }
  27. void cuenta(char mosco[][B],int oso[T])
  28. {
  29. int i=0;
  30. for( ;i<T;i++)
  31. {
  32. oso[i]=strlen(mosco[i]);
  33. }
  34.  
  35. }
  36. void imprime(int oso[],int cont)
  37. {
  38. int i=0,j=0;
  39. for(;i<T;i++)
  40. {
  41. printf("cad %d tiene =%d letras\n",i+1,oso[i]);
  42. }
  43. putchar('\n');
  44. for(;j<T;j++)
  45. {
  46. printf("cad %d tiene =%d palabras\n",j+1,cont);
  47. }
  48. }
  49. int palabras(char mosco[][B])
  50. {
  51. int cont,i=0,j=0;
  52.  
  53. for( ;i<T;i++)
  54. {
  55. cont=0;
  56. for(;j<T&&mosco[i]!='\0';j++)
  57. {
  58. if (i != ' ' || i!= '\n' || i!= '\t')
  59. cont++;
  60. }
  61.  
  62. }
  63.  
  64. }


Título: Re: contador
Publicado por: engel lex en 25 Marzo 2015, 06:45 am
linea 56, j debe ser menor que B (cantidad letras) y no T (cantidad de fases)

por otro lado en linea 55 reinicias cont, así que solo obtendrás el resultado de la ultima evaluada

linea 50 puede tampoco estar del todo bien ya que si tienes
"hola mundo cruel" contará solo 2

linea 24, es no recomendado, el uso de get, se recomienda el uso de fgets
https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html (https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html)


Título: Re: contador
Publicado por: vivianfes en 25 Marzo 2015, 21:45 pm
gracias ya por fin pude y checare el link muy amable :D

linea 56, j debe ser menor que B (cantidad letras) y no T (cantidad de fases)

por otro lado en linea 55 reinicias cont, así que solo obtendrás el resultado de la ultima evaluada

linea 50 puede tampoco estar del todo bien ya que si tienes
"hola mundo cruel" contará solo 2

linea 24, es no recomendado, el uso de get, se recomienda el uso de fgets
https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html (https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html)