Está en la página 1de 18

ADP - 2013

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.

Hay dos estilos de ejercicios en la prctica 3:

Secuencia de caracteres Secuencia de caracteres dividida en palabras

Ejercicio 1

Se leen caracteres hasta que llega ! Informar la cantidad de caracteres ledos.

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.

writeln('La cantidad de caracteres ledos es: ', cant);


writeln('Presione la tecla enter para finalizar...'); readln; readln; end.

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

Como sera el procesamiento?


Leo sobre car Mientras car <> .

Me guardo el contenido de CAR en ANT


Leo sobre CAR Pregunto si ANT = a y CAR = b Cuento sobre CANT que ab apareci una vez mas.

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.

Manejo de caracteres - Palabras

Secuencia de caracteres dividida en palabras

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

bb estobbb es b unb ejemplobbb debbb oracin *

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

representa carcter Blanco

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?