Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manejo de caracteres
Secuencia de caracteres
Siempre que trabajemos con secuencia de caracteres leeremos de a uno los caracteres sobre una variable tipo CHAR.
Tener en cuenta que para las practicas de ADP los ejercicios de secuencia de caracteres/palabras NO pueden resolverse con string.
Ejercicio 1
Ejercicio 1 - Ejemplo
Ahg:8mM&& !
Hay 9 caracteres
Ejercicio 1 - Solucin:
Program letras;
Var
cant: integer; letra: char; Begin cant:=0;
read(letra);
while (letra <> '!') do begin cant := cant + 1; read(letra); end;
Se lee un char fuera del while. Debo leer de nuevo antes de entrar evaluar nuevamente la condicin del while.
Ejercicio 2:
Qu modificamos si slo queremos contar los caracteres p?
Ejercicio 2 - Solucin:
Program letras;
var
cant: integer; Letra: char; Begin cant:=0;
read(letra);
while (letra <> '!') do begin if (letra = 'p') then cant:= cant + 1; read(letra); end;
Esta parte es la que result modificada. Prestar atencin a que se mantuvo la estructura de cmo leer una secuencia de caracteres.
writeln('La cantidad de caracteres p leidos es: ', cant); writeln('Presione la tecla enter para finalizar...'); readln; readln; end.
Ejercicio 3:
Realizar un programa que lea una secuencia de caracteres finalizada en *. Contar la cantidad de veces que aparece la letra a seguida de la letra b.
Ejercicio 3 - Casos:
a*
ab aparece 0 veces.
mnajabytbabyhaabi* ab* *
ab aparece 1 vez.
ab aparece 3 veces.
ab aparece 0 veces.
Ejercicio 3 - Solucin:
Qu variables necesito?
Car : variable para leer caracteres Ant : variable para guardar el caracter anterior Cant : cant. de veces que aparece ab
Ejercicio 3 - Solucin:
Program uno; Var cant: integer; car: char; ant: char; Begin cant:= 0; {Inicializo contador} read(car); {leo el primer caracter} While (car <> '*') do begin ant:= car; {antes de leer el siguiente me guardo el actual como anterior} read(car); {leo el siguiente caracter} if (ant = 'a') and (car = 'b') then {si ant=a y car=b secuencia ab} cant:= cant + 1; {cuento} end; writeln ('La cantidad de veces que aparece una a seguida de una b es: ', cant); writeln('Presione la tecla enter para finalizar...'); readln; readln; end.
A tener en cuenta:
Las palabras estn separadas por uno o ms blancos. La secuencia puede empezar con blanco(s). La secuencia termina con un carcter de fin (a especificar en el ejercicio). La ltima palabra puede NO estar seguida de un blanco (es decir la ltima palabra puede estar seguida del carcter de fin).
Ejemplo
b
representa carcter Blanco
Palabras
Ejercicio 4:
Realizar un programa que lee una secuencia de caracteres hasta el carcter *. La secuencia est dividida en palabras. Se pide contar la cantidad de palabras que comienzan con la letra J.
Ejercicio 4 - Casos:
casabbbjarabebfffjjkbbbjotabbe*
2 palabras
bbbbcasabbbjotabfffjjkbbb8k0bbebb* bbbbcasabbbholabfffjjkbbb8k0bbe*
1 palabra
0 palabra
Program palabra; Var bbbbcasabbbjotabfffjjkbbb8k0bbebb* cant: integer; casabbbjarabebfffjjkbbbjotabbe* car: char; bbbbcasabbbholabfffjjkbbb8k0bbe* Begin cant:=0; {Inicializo contador} read(car); while (car = ' ') do {Descartar blancos al principio de la secuencia} read (car); while (car <> '*') do begin if (car = 'J') then {Se encuentra en el primer caracter de la palabra} cant:= cant + 1; {Se cuenta aquella palabra que comienza con 'J'} while (car <> '*') and (car <> ' ' )do {lee hasta que termine la palabra } read (car); while (car = ' ') do {Descartar blancos entre palabras/final de secuencia} read (car); end; writeln('La cantidad de palabras que comienzan con la letra J es: ', cant); writeln('Presione la tecla enter para finalizar...'); readln; readln; end.
Solucin
Preguntas?