Pascal/Turbo Pascal - problema con programa de pascal

 
Vista:

problema con programa de pascal

Publicado por alejandra (2 intervenciones) el 19/11/2011 13:48:06
Mira he hecho un programa que al introducir una frase acabada en punto te dice cuantas palabras tiene y cuantas letras tiene la palabra más larga. Me pone que no tiene nigún error pero al ejecutarlo una vez leída la frase me pone:
$0040154C
$00406810
y se me cierra. Si quito la parte de calcular la palabra más larga se me ejecuta sin ningún problema pero claro, luego me aparece que la palabra más larga está formada por 0 letras.

PROGRAM prueba;

uses crt;

var
pa:= char;
contp, contl, pl: integer;

BEGIN
clrscr;

conl:= 1;
conl:= 0;
pl:=0;

write('Escribe una frase acabada en punto: ');

read(pa);
while pa <> '.' DO
Begin
if pa= ' ' then
begin
contp:= contp+1;
if contl>pl then pl:= contl;
end
else
cont:= contl+1;
End;

writeln('La frase está formada por ',contp,' palabras.');
writeln('La palabra más larga está formada por ',pl,' letras.');

readln;
readln;

END.
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

problema con programa de pascal

Publicado por ramon (2158 intervenciones) el 19/11/2011 19:37:20
{El principal problema que tienes es la variable [pa] la defines como char y loque entras
es una cadena por lo cual te da error .
Mira tu programa cambiado un poco}

PROGRAM prueba;
uses
crt;

var
pa : string;
p, contp, contl, pl: integer;

BEGIN
clrscr;
contl := 1;
contp := 0;
pl := 0;
pa := ' ';
write('Escribe una frase acabada en punto: ');
readln(pa);
if pa[length(pa)] <> '.' then
insert('.',pa,length(pa) + 1);
while pa[contl] <> '.' DO
Begin
if pa[contl] <> ' ' then
begin
contp := contp + 1;
end
else
begin
if pl > contp then
pl := pl
else
pl := contp;
p := p + 1;
contp := 0;
end;
contl := contl + 1;
End;
if pl > contp then
pl := pl
else
pl := contp;
p := p + 1;
writeln('La frase esta formada por ',p,' palabras.');
writeln('La palabra mas larga esta formada por ',pl,' letras.');
readln;
END.
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

problema con programa de pascal

Publicado por alejandra (2 intervenciones) el 22/11/2011 10:18:52
Pero al introducir datos en la cadena introduzco una frase osea caracteres, además la primera parte me da bien lo que me da error es la segunda. Y es un ejercicio de clase en el que no puedo usar strings. ¿Habría una manera de hacerlo?
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

problema con programa de pascal

Publicado por ramon (2158 intervenciones) el 22/11/2011 18:56:09
La entrada de datos la toma bien el proceso lo malo es cuando quieres saber cuantas palabras
o cuantas letras pues solo tienes 1 aunque la entrada la a gas de 100 letras solo cuenta 1 el char
las de mas entran en la entrada read pero no las almacena.
Podrías emplear un array char pero eso no tiene sentido para realizar después lo que quieres
tendrías que contar letras asta los blancos y cada blanco seria una palabra y comprobar
la palabra mas larga y esa seria la de mas letras.
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