
contar caracteres
Publicado por Elena (15 intervenciones) el 03/12/2012 10:38:57
Buenos dias tengo un problemilla con un ejercicio en el que tengo que contar cuantas veces a parece cada letra, mejor os dejo el enunciado:
2.- Se introduce un texto y se tiene que decir el número de veces que aparece cada letra del
alfabeto inglés (se termina de leer cuando se encuentra el carácter # y no se distingue entre
mayúsculas y minúsculas).
En el codigo de mi programa no da fallos de compilación pero a la hora de aumentar el contador de cada letra no funciona correctamente espero que podais echar una manilla si no muchas gracias de todas formas.
PROGRAM ejercicio2;
CONST
max=100;
TYPE
tcar=ARRAY[1..max] OF CHAR;
tcont=ARRAY['A'..'Z'] OF INTEGER;
VAR
cont:tcont;
car:tcar;
i,caracter:char;
PROCEDURE pideTexto( VAR car);
BEGIN
WRITELN('Introduce un texto : ');
END;
PROCEDURE compruebaCar(VAR caracter:char;cont:tcont;car:tcar);
VAR
numCar,j:integer;
BEGIN
numCar:=2;
pideTexto(car);
FOR i:='A' TO 'Z' DO
cont[i]:=0;
WHILE caracter<>'#'DO
BEGIN
READ(caracter);
UPCASE(caracter);
car[j]:=caracter;
WRITELN('CAR ',car[j]);
FOR j:=1 TO (numCar-1) DO
BEGIN
CASE car[j] OF
'A':cont['A']:=cont['A']+1;
'B':cont['B']:=cont['B']+1;
'C':cont['C']:=cont['C']+1;
'D':cont['D']:=cont['D']+1;
'E':cont['E']:=cont['E']+1;
'F':cont['F']:=cont['F']+1;
'G':cont['G']:=cont['G']+1;
'H':cont['H']:=cont['H']+1;
'I':cont['I']:=cont['I']+1;
'J':cont['J']:=cont['J']+1;
'K':cont['K']:=cont['K']+1;
'L':cont['L']:=cont['L']+1;
'M':cont['M']:=cont['M']+1;
'N':cont['N']:=cont['N']+1;
'O':cont['O']:=cont['O']+1;
'P':cont['P']:=cont['P']+1;
'Q':cont['Q']:=cont['Q']+1;
'R':cont['R']:=cont['R']+1;
'S':cont['S']:=cont['S']+1;
'T':cont['T']:=cont['T']+1;
'U':cont['U']:=cont['U']+1;
'V':cont['V']:=cont['V']+1;
'W':cont['W']:=cont['W']+1;
'X':cont['X']:=cont['X']+1;
'Y':cont['Y']:=cont['Y']+1;
'Z':cont['Z']:=cont['Z']+1;
END;
END;
numCar:=numCar+1;
WRITELN('NUM',numCar);
END;
END;
BEGIN
compruebaCar(caracter,cont,car);
FOR i:='A' TO 'Z' DO
WRITELN('Letra ',i,' aparece ',cont[i],' veces');
READLN;
READLN;
END.
2.- Se introduce un texto y se tiene que decir el número de veces que aparece cada letra del
alfabeto inglés (se termina de leer cuando se encuentra el carácter # y no se distingue entre
mayúsculas y minúsculas).
En el codigo de mi programa no da fallos de compilación pero a la hora de aumentar el contador de cada letra no funciona correctamente espero que podais echar una manilla si no muchas gracias de todas formas.
PROGRAM ejercicio2;
CONST
max=100;
TYPE
tcar=ARRAY[1..max] OF CHAR;
tcont=ARRAY['A'..'Z'] OF INTEGER;
VAR
cont:tcont;
car:tcar;
i,caracter:char;
PROCEDURE pideTexto( VAR car);
BEGIN
WRITELN('Introduce un texto : ');
END;
PROCEDURE compruebaCar(VAR caracter:char;cont:tcont;car:tcar);
VAR
numCar,j:integer;
BEGIN
numCar:=2;
pideTexto(car);
FOR i:='A' TO 'Z' DO
cont[i]:=0;
WHILE caracter<>'#'DO
BEGIN
READ(caracter);
UPCASE(caracter);
car[j]:=caracter;
WRITELN('CAR ',car[j]);
FOR j:=1 TO (numCar-1) DO
BEGIN
CASE car[j] OF
'A':cont['A']:=cont['A']+1;
'B':cont['B']:=cont['B']+1;
'C':cont['C']:=cont['C']+1;
'D':cont['D']:=cont['D']+1;
'E':cont['E']:=cont['E']+1;
'F':cont['F']:=cont['F']+1;
'G':cont['G']:=cont['G']+1;
'H':cont['H']:=cont['H']+1;
'I':cont['I']:=cont['I']+1;
'J':cont['J']:=cont['J']+1;
'K':cont['K']:=cont['K']+1;
'L':cont['L']:=cont['L']+1;
'M':cont['M']:=cont['M']+1;
'N':cont['N']:=cont['N']+1;
'O':cont['O']:=cont['O']+1;
'P':cont['P']:=cont['P']+1;
'Q':cont['Q']:=cont['Q']+1;
'R':cont['R']:=cont['R']+1;
'S':cont['S']:=cont['S']+1;
'T':cont['T']:=cont['T']+1;
'U':cont['U']:=cont['U']+1;
'V':cont['V']:=cont['V']+1;
'W':cont['W']:=cont['W']+1;
'X':cont['X']:=cont['X']+1;
'Y':cont['Y']:=cont['Y']+1;
'Z':cont['Z']:=cont['Z']+1;
END;
END;
numCar:=numCar+1;
WRITELN('NUM',numCar);
END;
END;
BEGIN
compruebaCar(caracter,cont,car);
FOR i:='A' TO 'Z' DO
WRITELN('Letra ',i,' aparece ',cont[i],' veces');
READLN;
READLN;
END.
Valora esta pregunta


0