C/Visual C - kontar karacteres

 
Vista:

kontar karacteres

Publicado por hyd3 (3 intervenciones) el 08/06/2005 21:44:22
hola amigos... tengo un rollo armado.... soy novato en el c++ y necesito akguien ke me ayude kon un programa sencillo ke me diga kuantos karacteres de un mismo tipo hay en una kadena de rango 10.... por ejemplo, si entro "cadenade10" me imprima:

cantidad de c-> 1
cantidad de a-> 2
cantidad de d-> 1
cantidad de e-> 2
.........

y asi sucesivamente hasta llegar al ultimo karacter.... esto debe ser en c puro, no en visual c++

si alguien puede facilitarme un kodigo fuente seria super.... o si me indikan mas o menos tambien me sirve...

salu2 y muchas gracias por la atencion
hyd3
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

RE:kontar karacteres

Publicado por fernando.gomez (1603 intervenciones) el 08/06/2005 23:58:22
Yo que ando muriéndome por implementar una plantilla cuyos parámetros de plantilla sean variables para implementar un functor -una clase que actúe como una función- para poder comunicar eventos entre clases, y tú con este problema =)...

En fin, el algoritmo es sencillo. Algo no muy optimizado sería analizar letra por letra de la cadena a través de un bucle:

int i;
for (i = 0; i < strlen(szCadena); i++)
{
// aquí va el análisis
}

Ahora, lo que necesitas es que en cada iteración aumentes el contador para la letra en particular que encuentres. Si la optimización no importa, puedes crear un tantas variables entero como letras que sean válidas para contar. Cada vez que en la iteración te encuentres con una letra, aumentas en uno la variable asociada con esa letra...

int iACount = 0;
int i;

// ...
for (i = 0; i < strlen(szCadena); i++) {
switch (szCadena[i]) {
case 'A':
case 'a':
iACount++;
break;
// etcétera
}
}

Algo más elaborado sería que tuvieses una lista enlazada donde en cada nodo guardases la letra y un contador. Cuando encuentres una letra nueva, haces una búsqueda de la lista, y si no encuentras un nodo para esa lista, insertas un nuevo nodo. Si sí lo encuentras, sólo actualizas el contador en uno.

Mucho trabajo para un problemilla. No se me ocurre otra cosa, así que te sugiero que esperes algún tiempo a ver si a alguien más de la lista se le ocurre una forma más sencilla.
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

RE:kontar karacteres

Publicado por hyde (3 intervenciones) el 10/06/2005 03:22:52
hola fernando, muchas gracias por la ayuda... me fue de gran ayuda.... llegue a la solucion por otra via y aki se las dejo....

salu2
hyd3

#include<stdio.h>
#include<conio.h>
void main()
{
int i=0,j=0,cont=0;
char a[10];
clrscr();
scanf("%s",&a);

for(j='a';j<='z';j++) /*kambio de karacter*/
{
cont=0;
for(i=0;i<=9;i++)/*mov por la kadena*/
{
if(a[i]==j)
cont++;

}
printf("cant de %c -> %d ",j,cont);
}


}
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