elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  contador de palabras, con funcion que devuelve valor erroneo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: contador de palabras, con funcion que devuelve valor erroneo  (Leído 1,295 veces)
Angel20810

Desconectado Desconectado

Mensajes: 1


Ver Perfil
contador de palabras, con funcion que devuelve valor erroneo
« en: 3 Marzo 2017, 01:58 am »

Código
  1. include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. int conv()
  8. {
  9. char frase[200];
  10. int cont,x,y,lon,cont2;
  11.  
  12.  
  13.    printf("ingresa una frase\n");
  14.    fflush(stdin);
  15.    gets(frase);
  16.    lon=strlen(frase);
  17.    for(x=0;x<=lon;x++)
  18.    {
  19.    if(frase[x]=='a')
  20. {
  21.  
  22. cont=cont+1;
  23. return cont;
  24.  
  25.  
  26. }
  27.    }
  28.  
  29.    }
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37. main()
  38. {
  39. int z;
  40. z=conv();
  41. printf("%d",z);
  42.  
  43.  
  44.  
  45. return 0;
  46. }
  47.  


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 3 Marzo 2017, 04:21 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: contador de palabras, con funcion que devuelve valor erroneo
« Respuesta #1 en: 3 Marzo 2017, 04:23 am »

tu codigo no tiene mucho sentido para contar palabras, explica que intentas y que error te da

por cierto,

Código:
fflush(stdin);

no se hace

lee esto
https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
integeroverflow

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: contador de palabras, con funcion que devuelve valor erroneo
« Respuesta #2 en: 4 Marzo 2017, 15:10 pm »

Código
  1. include <stdio.h>
  2. [..]code[..]
  3.  

lo que intentas es contar las palabras de la frase de esta forma?

"asdas asdasda asdsadas asdsad asdasd" retornaria 5?

en ese caso, podrias hacer algo asi:

Código
  1. int contar_palabras(char *frase)
  2. {
  3. int palabras = 0;
  4. char ultimo = 0x00;
  5.    while(*frase)
  6.    {
  7. if((*frase == ' ') && (ultimo != ' '))
  8.                {
  9. palabras++;
  10.                }
  11. ultimo = *frase;
  12. *frase++;
  13. }
  14. if(ultimo == ' ') return palabras;
  15. else return palabras+1;
  16. }
  17.  

lo que hace esta funcion es recorrer caracter por caracter la cadena. si encuentra un espacio, significa que es el fin de una palabra. entonces suma 1 a la cuenta de palabras y sigue buscando.
tambien compara el caracter que esta analizando con el ultimo caracter analizado, y si es un espacio lo ignora. esto es para ignorar multiples espacios, de modo que "asd asd asd asd" devuelva el mismo numero de palabras que "asd            asd      asd              asd".

a lo ultimo, compara el ultimo caracter leido con un espacio.
si es un espacio, retorna el numero de palabras contadas.
si no es un espacio retorna el numero de palabras contadas mas uno.

por que? porque dijimos que un espacio significaba el final de una palabra. entonces la cadena "asd asd asd" nos daria como resultado 2 palabras, ya que la ultima no tiene ningun espacio que nos haga saber que ahi terminaba una palabra. entonces sumamos uno.
en caso de que la cadena termina en un espacio, devolvemos el valor de la cuenta y listo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] - Contador de palabras en frases
Scripting
ChicoMaravilla 4 29,211 Último mensaje 18 Enero 2011, 21:17 pm
por Karcrack
[PYTHON] Contador de palabras
Scripting
ChicoMaravilla 2 9,736 Último mensaje 5 Abril 2011, 20:47 pm
por Novlucker
mysql_field_name devuelve el valor del campo en lugar de su nombre[SOLUCIONADO]
PHP
Daklon 2 1,536 Último mensaje 28 Julio 2013, 12:42 pm
por Daklon
[resuelto] foreach solo devuelve un valor? habiendo 20
PHP
venadHD 4 1,948 Último mensaje 20 Julio 2015, 11:05 am
por venadHD
contador de palabras (ayuda con el error)
Programación C/C++
creiko 3 1,324 Último mensaje 3 Septiembre 2016, 00:46 am
por JonaLamper
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines