Dev - C++ - Implementar un algoritmo que cuente el numero de caracteres captados desde el teclado en C

 
Vista:

Implementar un algoritmo que cuente el numero de caracteres captados desde el teclado en C

Publicado por Luis Garcia (1 intervención) el 19/11/2019 15:01:44
Buenas tardes estoy intentando hacer un programa que haga lo siguiente:
Implementar un algoritmo que cuente el numero de caracteres captados desde el teclado, determinar si es un dígito o un carácter o un espacio, e imprimir por pantalla estos números según el tipo.
Esto es lo que he hecho pero únicamente consigo que me lea todos los caracteres. No logro que me cuente letras números y espacios por separado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//Pedir texto por teclado, contar caracteres, diferenciasr entre caracteres,//
//digitos y espacios e imprimir estos segun el tipo que sean.//
 
#include<stdio.h>
 
int main() {
int caracterestotales;
int caracter;
int letras;
int letra=0;
int numeros=0;
int espacios=0;
char text[100];
	printf("Escriba aqui el texto deseado \n" ,text);
	fflush(stdin);
	gets(text);
	caracterestotales = strlen(text);
while(text[caracter]=='\0')
if(text[caracter]=='a' || text[caracter]=='b' || text[caracter]=='c' || text[caracter]=='d' || text[caracter]=='e' || text[caracter]=='f' || text[caracter]=='g' || text[caracter]=='h' || text[caracter]=='i' || text[caracter]=='j' || text[caracter]=='k' || text[caracter]=='l' || text[caracter]=='m' || text[caracter]=='n' || text[caracter]=='ñ' || text[caracter]=='o' || text[caracter]=='p' || text[caracter]=='q' || text[caracter]=='r' || text[caracter]=='s' || text[caracter]=='t' || text[caracter]=='u' || text[caracter]=='v' || text[caracter]=='w' || text[caracter]=='x' || text[caracter]=='y' || text[caracter]=='z')
letras = letra+1;
 
else if (text[caracter]=='1' || text[caracter]=='2' || text[caracter]=='3' || text[caracter]=='4' || text[caracter]=='5' || text[caracter]=='6' || text[caracter]=='7' || text[caracter]=='8' || text[caracter]=='9' || text[caracter]=='0')
numeros++;
 
else if (text[caracter]==' ')
espacios++;
 
		printf ("El numero total de caracteres es: %d\n" ,caracterestotales);
	printf ("El numero total de letras es: %d\n" ,letras++);
	printf ("El numero total de numeros es: %d\n" ,numeros);
	printf ("Y el numero total de espacios es: %d\n" ,espacios);
 
getch ();
return 0;
 
}

A ver si alguien me puede ayudar y gracias de antemano.
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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Implementar un algoritmo que cuente el numero de caracteres captados desde el teclado en C

Publicado por Rodrigo (539 intervenciones) el 19/11/2019 15:42:04
Sugerencias:

- Cambia el if gigantesco por uno que haga algo equivalente, pero con menos tecleo:

1
2
if( text[caracter] >= 'a' && text[caracter] <= 'z') {
}

Haz algo similar con los numeros.
Puedes incluso considerar agregar mayusculas y minusculas.

- Incrementa la variable letras sumandole 1 a ella y haciendo que parta en cero

1
2
3
4
5
6
7
int letras = 0;
//...
 
while(...)
  if( text[caracter] >= 'a' && text[caracter] <= 'z') {
     letras++;
  }

Tal como lo tienes, puesto que le sumas el valor de "letra + 1" y "letra" no parece cambiar nunca, creo que "letras" siempre va a tener el valor 1, si es que alguna vez aparece una letra, o algun valor basura, si no aparece.

- Asegurate de aumentar la variable caracter DENTRO del ciclo, si no lo haces, caracter siempre va a valer el valor que tenia antes.
- Usa { } para encerrar mas de 1 instruccion a ejecutarse en cada vuelta del ciclo
- Asegurate de inicializar la variable caracter ANTES del ciclo, con el valor 0.
- Asegurate que el ciclo ingrese al menos 1 vez (y que la variable caracter se modifique dentro del ciclo, sino no va a salir nunca de el).
La condicion actual del ciclo parece que no va a ser cierta nunca.

- Hay otras cosas, pero supongo que esto te ayudara a mejorar el programa.

- Si publicas codigo, al editar un mensaje, toma ventaja del icono </>, encierra tu codigo usando ese icono y tu codigo se ve asi
1
printf("hola");
no asi:
printf("hola");

al ponerlo asi, tambien aparece el numero de linea, mas facil indicar problemas asi.
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

Implementar un algoritmo que cuente el numero de caracteres captados desde el teclado en C

Publicado por Daniela Crespo (1 intervención) el 15/11/2020 01:20:59
Hola me pudieras decir como lo resolviste!!! Gracias!!
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