Buenas a todos
Es mi segunda duda con respecto a arrays de caracteres, perdonen mi ignorancia, me estoy iniciando en programacion con C..
Tengo un ejercicio de arrays el cual dice:
Contar el numero de veces que cada letra mayuscula se producen en una linea de texto leida por el teclado y decir que caracteres se encontraron y cuantas veces se repitió cada uno.
He logrado hacer que cuente la cantidad de mayusculas encontradas a través de éste bucle
while(cadena[i] != NULL)
{
if ((cadena[i] >= 'A' && cadena[i] <= 'Z'))
contador++;
i++;
}
Pero no sé como hacer para que me diga cuantas veces se repitió A,B,C etc..
Estoy usando una cadena unidimensional para guardar el texto del teclado.
Otra cosa muy importante y es lo que me está impidiendo continuar, ¿como se hace para mostrar un caracter almacenado en un elemento del array?
Me gustaria que mostrará el mensaje como:
0=H
1=O
2=L
3=A
y asi conocer en que indice se encuentra cada caracter para despues comparar cada uno con un if /else if, pero sin resultado positivos, he intentado con:
char cadena[20];
printf("ingrese una cadena:");
scanf("%s", cadena);
int i=0;
for(i=0;i<20;i++){
cadena[i]=i;
printf("indice %d= %c\n",i,cadena[i])
}
getch();
return 0;
Eso es lo más cerca que he estado de conseguir la lista pero me muestra simbolos y caritas :huh:
Espero me hayan entendido y me puedan orientar.
OJO: ya busque en el foro "programacion c/c++", como "mayusculas" y solo me muestra cinco post, ninguno como éste.
Te muestra los símbolos porque pusiste:
cadena[i]=i;
Así, cada caracter es igual a un numero del 0 al 19 (cuya representación son caritas y símbolos). Son los caracteres no imprimibles. http://www.elcodigoascii.com.ar/ (http://www.elcodigoascii.com.ar/)
Para contar cuantoss hay de cada, lo que puedes hacer es hacer un array de int de 26 elementos (inicializados a 0), donde cada uno represente a una letra. Luego, cada vez que encuentres una letra, incrementas el correspondiente en el array. Puedes hacerlo con un switch de 26 cases, pero el mejor método es:
arrayLetras[cadena[i]-'A'] += 1;
Así, si cadena es una 'A', quedará como arrayLetras[0], que representa la A. Si es una B, arrayLetras[1], que es la B, y etc.