Algoritmo en Pseudocodigo.

feeeeeL

Buenas gente! a ver si me podeis ayudar, tengo que realizar un algoritmo en pseudocodigo con este enunciado:

Queremos hacer un programa que pida al usuario un texto acabado en '$' y que cuente cuantas veces aparece cada caracter.

Yo tengo echo esto:

programa ex_car es

var

q:tabla(256) de natural;
i:entero;
c:caracter;

fvar

para (i=0 hasta 255) hacer

        q[ i]=0;

fpara

Escribe("Introduce un texto acabado en '$'" );
Leer(c);

mientras (c!='$' ) hacer

i=car_asc(c);
q=q+1;
Leer(c);

fmientras

y hasta aqui me he quedado, que no lo veo... tengo que hacer otro for(para) y los printsf(Escribe) pero no se la condicion que tengo que ponerle al for alguien sabria terminar este codigo?

yusukorz

Así de primeras me viene una solución, que sería meter en un vector todos los caracteres del string sin repetir, y por cada posición de este vector, comparar con el string cuantas veces aparece.

D

Será lento y seguro que consigues algo mejor, pero puedes coger el vector donde tengas el texto e ir comparando cada carácter nuevo (que no hayas comprobado antes) con todos los siguientes. A ver si me explico mejor: coges la posición 0, y vas buscando la repetición de ese caracter hasta el final, después coges la posición 1, y si el caracter que contiene es distinto al de la posición 0, compruebas de 1 al final...

NeB1

#3 lo ideal sería que despues de comprobar el elemento [0] por ejemplo, elimine este elemento y todos los que son iguales del vector,mientras los compara.

TBT

Si estás en C, usaría calloc en vez de malloc para reservar el array ya que lo inicializa con ceros.

Una vez tienes el array con las veces que se repite cada char, recórrelo con un for 0 to eltamañoquetenga y si lees algo != de 0, muestras el char y las veces que se repite.

Con una pasada en la cadena y otra en la tabla de chars lo puedes hacer, no te lies con ir mirando cuántas veces se repite el 1º luego el 2º ... que das más vueltas que un tonto.

Usuarios habituales