Pascal/Turbo Pascal - Otra pregunta sobre un ejercicio (Es básico también)

   
Vista:

Otra pregunta sobre un ejercicio (Es básico también)

Publicado por Federico (2 intervenciones) el 05/04/2011 22:38:23
Buenas. Disculpen que los moleste con algo tan tonto pero recién estoy haciendo mis 1ras armas en la programación. Resulta que pasé de chapín a pascal y funciona todo ok, pero en lugar de darme un número entero en el resulta da una cosa extraña. Este es el programa:

program ej12(input,output);
uses
crt;
var l: real;
begin
clrscr;
writeln('ingrese lado');
readln(l);
writeln ('el perimetro es', l*4);
repeat until keypressed
end.

Bueno resulta que cuando me tiene que dar el perímetro, le pongo por ejemplo un 4 y en lugar de salir 16 sale
1.6000000000E+00.


Porqué pasa esto?

Y otra pregunta: cómo hago algo como para evitar que la persona ingrese cualquier cosa? por ejemplo una letra no puede ingresar sino un número (porque es un perímetro), metí una letra y saltaba error, osea como hago para que no se mete cualquier valor allí?...

Gracias de antemano.
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

Otra pregunta sobre un ejercicio (Es básico también)

Publicado por ramon (2072 intervenciones) el 06/04/2011 16:54:57
program ej12(input,output);
uses
crt;
var
l: real;
begin
clrscr;
writeln('ingrese lado');
readln(l);
writeln ('el perimetro es', l * 4:8:2); {Los números detrás de los dos puntos realizan el que la salida}
{se realice en formato [16.00 ni no en 1.6000000E +00}
{la forma es Ejemplo : writeln('el primero : ',I * 4 :8:2}}
{8 unidades y 2 decenas}
repeat until keypressed
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

Otra pregunta sobre un ejercicio (Es básico también)

Publicado por ramon (2072 intervenciones) el 06/04/2011 17:58:37
{Tendrás que revisar la entrada antes de aceitarla o con esta función acondicionarla a tu}
{gusto en este caso números reales o números naturales cambiando algunas cosas como}
{real por integer }

function entrada : real;
var
tecla : char;
dato : string[12];
cuent : integer;
er, x, y : integer;
r : real;
salir : boolean;
begin
entrada := 0.0;
salir := false;
cuent := 1;
x := 4;
y := 10;
repeat
tecla := readkey; {Tomamos la tecla pulsada}
if tecla in [#46,#48..#57] then {verificamos que la entrada que se}
begin {realiza es numerica y punto}
dato[cuent] := tecla; {tomamos el dato}
dato[0] := chr(cuent); {marcamos la cadena con el num.}
gotoxy(x + cuent,y);write(dato[cuent]);{de entrada y la presentamos}
cuent := cuent + 1; {incrementamos el contador}
if cuent > 12 then {rebisamos que no pase de longitud}
cuent := 12;
end;
if tecla = #8 then {comprovamos si es la tecla retroceso o sea}
{anular entrada}
begin
cuent := cuent - 1; {decrementamos el contador}
dato[cuent] := ' '; {borramos contenido}
dato[0] := chr(cuent); {entramos cambio}
gotoxy(x + cuent,y);write(dato[cuent]);
end;
if tecla = #13 then {comprovamos que pulsa enter y convertimos a num.}
begin
val(dato,r,er); {convertimos a real la cadena}
entrada := r;
if er <> 0 then {rebisamos que esta correcta}
begin
fillchar(dato,13,' '); {si no borramos y empezamos de nuebo}
dato[0] := chr(12);
cuent := 1;
x := 4;
y := 10;
gotoxy(x + cuent,y);write(' ');
end
else
begin
salir := true; {si esta correcto salimos}
end;
end;
until (salir = true) or (tecla = #27); {tecla escape o sea [ESC] sale}
{sin realizar nada debuelve 0.0}
end;

{La sintaxis sera numero := entrada el numero sera real}
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

Otra pregunta sobre un ejercicio (Es básico también)

Publicado por Federico (2 intervenciones) el 06/04/2011 20:09:51
Excelente. Mil gracias por la ayuda.
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