Pascal/Turbo Pascal - ayuda con cuclos de repetición

 
Vista:

ayuda con cuclos de repetición

Publicado por john (3 intervenciones) el 08/06/2006 18:35:15
hey que tal, necesito un poco de su ayuda, estoy haciendo uin programa que te pida el area y el perimetro de una figura (cuadrado,rectangulo y triangulo) tu tienes que elegir la figura.
el problema que tengo es que no puedo meter un ciclo de repetición, y que cuando lo ejecuto (por que si compila) solo me da los datos de la figura 'a'.
P.D. no se si es por que uso free pascal, pero cuando meto un 'end;' no me lo acepta y me dice que le ponga un ' . ' en vez de ' ; ' .

program figuras;
uses crt;
const
a='triangulo' ;
b='cuadrado' ;
c='rectangulo' ;
var
f:string;
v,h,l,peri,araea:real;
begin
clrscr;
writeln('elige figura');
writeln('a:triangulo b:cuadrado c:rectangulo' );readln(f);

if (f='a' ) then
writeln('base?');readln(v);
writeln('altura?');readln(h);
writeln('lado?');readln(l);
peri:=(l*l*l);
area:=(v*h)/2;
writeln('perimetro ', peri:4:2);
writeln('area ', area:4:2);

if (f='b' ) then
writeln('lado?');readln(l);
peri:=(l*l*l*l);
area:=(l*l);
writeln('perimetro ', peri:4:2);
writeln('area ', area:4:2);

if (f='c' ) then
writeln('base?');readln(v);
writeln('altura?');readln(h);
peri:=(v*v*h*h););
area:=(v*h);
writeln('perimetro ', peri:4:2);
writeln('area ', area:4:2);

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

RE:ayuda con cuclos de repetición

Publicado por Carlos Guimaraenz (265 intervenciones) el 26/10/2006 04:50:23
Hola John, sé que ya pasó demasiado tiempo, seguramente ya no te sirva a tí, pero probablemente haya alguien a quien le pueda servir.

En ese ejercicio hay un problema muy importante:

if (f='a' ) then
writeln('base?');readln(v);
writeln('altura?');readln(h);
writeln('lado?');readln(l);
peri:=(l*l*l);
area:=(v*h)/2;
writeln('perimetro ', peri:4:2);
writeln('area ', area:4:2);

Para que todas las instrucciones que siguen luego de if (f='a' ) then, éstas deben estar incluidas entre las palabras reservadas BEGIN y END. En el ejemplo:

if (f='a' ) then
BEGIN
writeln('base?');readln(v);
writeln('altura?');readln(h);
writeln('lado?');readln(l);
peri:=(l*l*l);
area:=(v*h)/2;
writeln('perimetro ', peri:4:2);
writeln('area ', area:4:2);
END;

Además, al ser todas las comparaciones sobre la misma variable, se pueden usar los IF y ELSE, o bien con una sentencia CASE, lo cual puede simplificar, y mucho, la lectura y comprensión del código:

CASE ( f ) OF
'a' : BEGIN ....... END;
'b' : BEGIN ....... END;
'c' : BEGIN ....... END;
END;

La otra cuestión, es que la palabra END lleva al final un ; (punto y coma) generalmente, excepto antes de la palabra ELSE (donde no lleva ningún caracter después) y en el END de fin del código principal, o sea el último END del programa, donde lleva un . (punto).

Un abrazo!
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