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 Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Contar letras en cualquier oración
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Contar letras en cualquier oración  (Leído 4,088 veces)
erickcasita

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Contar letras en cualquier oración
« en: 4 Enero 2018, 18:21 pm »


Hola, he estado haciendo este ejercicio para contar las letras de una frase, al parecer funciona bien pero necesito saber que más agregarle o si me falta algo...
Muchas gracias


Código
  1.  
  2. #include <stdio.h>
  3. #include <string.h>
  4. int main() {
  5. char nomb[100];
  6. int let, cont = 1;
  7. printf("Ingrese una frase\n");
  8. fflush(stdin);
  9. fgets(nomb, 100, stdin); //saco la longitud original
  10. let = strlen(nomb);
  11.  
  12. for (int i = 0; i < let; i++) {
  13.  
  14. if (nomb[i] == ' ') {
  15.  
  16. cont++; //cuento los espacios en blanco
  17.  
  18. }
  19. }
  20. let = let - cont; // al final simplemente lo resto a la longitud original.
  21. printf("\n La frase tiene  %d palabras", let);
  22.  
  23. return 0;
  24. }
  25.  
  26.  


En línea

"Nadie nace sabiendo, Todos aprendemos y seguimos aprendiendo."
fary


Desconectado Desconectado

Mensajes: 1.084



Ver Perfil WWW
Re: Contar letras en cualquier oración
« Respuesta #1 en: 4 Enero 2018, 21:04 pm »

Está bien, aunque lo puedes remusir un poco  :)

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. char nomb[100];
  6. int i, a = -1;
  7.  
  8. printf("Introduce tu frase: ");
  9.    fflush(stdin);
  10. fgets(nomb, 100, stdin);
  11.  
  12. for (i = 0; nomb[i] != '\0'; i++)
  13.    {
  14.        if (nomb[i] != ' ') a++;
  15.    }
  16.  
  17.    printf("Hay %i letras.\n", a);
  18.  
  19. return 0;
  20. }
  21.  

saludos.


En línea

Un byte a la izquierda.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Contar letras en cualquier oración
« Respuesta #2 en: 4 Enero 2018, 22:07 pm »

Te recomiendo la librería ctype.h. Tiene funciones para discriminar letras, números, caracteres imprimibles, etc.
Tú programa solo busca espacios; una tabulación, signos o números serán cobrados como letras.
En línea

erickcasita

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Contar letras en cualquier oración
« Respuesta #3 en: 5 Enero 2018, 03:18 am »

Me puse a investigar un poco sobre la librería cytpe.h  y logre hacer esto espero quede correcto:
saludos cordiales

Código
  1.  
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. int main() {
  6. char nomb[100];
  7. int let, cont, contsig, contespa;
  8. int suma, rptaletra;
  9. printf("Ingrese una frase\n");
  10. fflush(stdin);
  11. fgets(nomb, 100, stdin);
  12. let = strlen(nomb);//saco la longitud original
  13.  
  14. for (int i = 0; i < let; i++) {
  15.  
  16. if (isdigit(nomb[i])) {
  17.  
  18. cont++; //cuento los numeros
  19. }
  20. if (ispunct(nomb[i])) {
  21.  
  22. contsig++; //cuento los signos etc..
  23.  
  24. }
  25. if (isspace(nomb[i])) {
  26.  
  27. contespa++; //cuento los espacios etc..
  28. }
  29. suma = cont + contsig + contespa; / sumo los contadores
  30. }
  31.  
  32. rptaletra = let - suma; // al final simplemente lo resto a la longitud original.
  33. printf("\n La frase tiene  %d letras", rptaletra);
  34.  
  35. return 0;
  36. }
  37.  
  38.  
  39.  
En línea

"Nadie nace sabiendo, Todos aprendemos y seguimos aprendiendo."
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Contar letras en cualquier oración
« Respuesta #4 en: 5 Enero 2018, 03:52 am »

No hace falta que sean contadores diferentes, puedes seguir incrementando el mismo. También tienes isalpha que discrimina letras, pero ahora no sé si con el correspondiente locales en español también le entran acentos y eñes.
En línea

erickcasita

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Contar letras en cualquier oración
« Respuesta #5 en: 5 Enero 2018, 04:19 am »

de hecho  el carácter ñ lo toma como si fueran 2.  :(
En línea

"Nadie nace sabiendo, Todos aprendemos y seguimos aprendiendo."
vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Contar letras en cualquier oración
« Respuesta #6 en: 7 Enero 2018, 17:22 pm »

de hecho  el carácter ñ lo toma como si fueran 2.  :(
En windows sale bien:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <locale.h>
  5. int main() {
  6. //setlocale(LC_ALL, "");
  7. int let=0, cont=0, contsig=0, contespa=0;
  8. int suma=0, rptaletra=0, i;
  9. char nomb[100];
  10.  
  11. scanf("%99[^\n]%*c", nomb);
  12. let = strlen(nomb);
  13.  
  14. for (i = 0; i < let; i++) {
  15. if (isdigit(nomb[i])) {
  16.  
  17. cont++; //cuento los numeros
  18. }
  19. if (ispunct(nomb[i])) {
  20.  
  21. contsig++; //cuento los signos etc..
  22.  
  23. }
  24. if (isspace(nomb[i])) {
  25.  
  26. contespa++; //cuento los espacios etc..
  27. }
  28. suma = cont + contsig + contespa; // sumo los contadores
  29. }
  30. rptaletra = let - suma; // al final simplemente lo resto a la longitud original.
  31. printf("\n La frase tiene  %d letras", rptaletra);
  32. return 0;
  33. }
  34.  
En línea

erickcasita

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Contar letras en cualquier oración
« Respuesta #7 en: 7 Enero 2018, 17:44 pm »

Estuve leyendo algo sobre locale.h pero no entiendo muy bien.  Aquí el linux sigue contado el carácter "ñ" y los acentos como 2 carácteres. ¿qué podría estar pasando?
En línea

"Nadie nace sabiendo, Todos aprendemos y seguimos aprendiendo."
vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Contar letras en cualquier oración
« Respuesta #8 en: 7 Enero 2018, 18:10 pm »

Puede ser el codepage de la terminal. Puede que esté seteada como unicode o utf. Debe haber algo como una función que te diga el codepage actual, y otra para modificar, pero realmente no estoy muy seguro de nada ya que no sé mucho sobre linux. Pero sé que em algunas paginas de código los acentos son contados como una letra más, o sea, 'ñ' seria contado como 2 letras, el '~'  más 'n'. En todo caso aguarde alguien que tenga algo más de luces mejor que yo. >_<
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Contar letras minusculas y mayusculas
Ejercicios
kay19 0 12,069 Último mensaje 9 Septiembre 2009, 20:06 pm
por kay19
contar letras de un texto « 1 2 3 4 »
Programación C/C++
ALONSOQ 33 27,448 Último mensaje 4 Julio 2012, 23:05 pm
por ALONSOQ
letras iniciales de una oracion en mayuscula
Programación C/C++
bobitttyy 5 3,163 Último mensaje 11 Abril 2015, 19:48 pm
por rir3760
Ingresar una oracion, toma cada palabra y contar sus vocales(Solucionado)
.NET (C#, VB.NET, ASP)
01munrra 2 3,384 Último mensaje 30 Septiembre 2015, 03:46 am
por 01munrra
[Python 3x] Contar las letras de cualquier frase
Python
erickcasita 8 12,519 Último mensaje 29 Enero 2018, 18:32 pm
por erickcasita
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines