Estamos remodelando el sitio, pueden encontrar errores, disculpen las molestias.

NO COMPILA, help

Moderador: Moderadores Programación

NO COMPILA, help

Notapor oliverm » Vie Jul 16, 2010 7:30 pm

hola estoy aprendiendo pal segundo semestre y quiero hacer un programa que primero pregunte si quiero calcular el area o el volumen de la esfera, despues pregunte cantidad de decimales y luego el radio de la esfera, hasta el momento, diseñé esto, pero no compila ):

Código: Seleccionar todo
program aprendiendo;
(*Oliver Mohr
Versi¢n 1.1.0
Fecha de inicio 14-07-2010
Objetivo: Aprender
Fichero: aprendiendo.pas*)
const
Pi=3.141592653589793238462643;
var
R: real;
D: integer;
dec: integer;
n: char;
function Volumen(R: real):real;
function Area(R: real):real;
begin
     Volumen:= (4/3)*Pi*R*R*R;
     Area:= 4*Pi*R*R;
end;
begin
     writeln('Bienvenido, antes de empezar especifique si desea calcular  rea o volumen de la esfera (a/v)');
     readln(n);
     CASE n of 'v':
               begin
               repeat
                     writeln('¨Cu ntos decimales necesita usar (0-9)?');
                     readln(d);
                     if (0>d) or (d>9)  then write ('Ingrese un n£mero entre 0 y 9.');
               until (0<=d) and (d<=9);
               repeat
                     writeln('Ingrese el radio de la esfera.');
                     readln(R);
                     if R > 0 then
                     write ('Esfera de radio ',R:2*d:d, ' tiene volumen ',Volumen(R):2*d:d) else
                     write ('El radio ingresado no es un n£mero mayor a 0.');
                     writeln();
                     writeln ('Desea continuar? (s/n)');
                     readln(n);
               until n='n';
               writeln('Adios presione cualquier tecla para terminar.');
               readln();
               end;
     'a':
              begin
              repeat
                    writeln('¨Cu ntos decimales necesita usar (0-9)?');
                    readln(d);
                    if (0>d) or (d>9)  then write ('Ingrese un n£mero entre 0 y 9.');
              until (0<=d) and (d<=9);
              repeat
                    writeln('Ingrese el radio de la esfera.');
                    readln(R);
                    if R > 0 then
                    write ('Esfera de radio ',R:2*d:d, ' tiene  rea ',Area(R):2*d:d) else
                    write ('El radio ingresado no es un n£mero mayor a 0.');
                    writeln();
                    writeln ('Desea continuar? (s/n)');
                    readln(n);
              until n='n';
              writeln('Adios presione cualquier tecla para terminar.');
              readln();
              end;
              end;
end.



(e visto q muchos tienen espacios para el lado y se ve más ordenado, mi programa no lo hace sólo y tampoco se si lo hace alguno o si lo hacen los programadores para ordenarse, al caso, tiré algunas lineas para el lado yo)

agradecería ayuda :)
oliverm
Mechón
 
Mensajes: 17
Registrado: Sab May 22, 2010 3:43 pm
Campus: Casa Central

Re: NO COMPILA, help

Notapor ANGeee » Vie Jul 16, 2010 7:49 pm

compañero :
esto que estay haciendo es casi lo ultimo de pascal es materia del 2º certamen

program aprendiendo;
const
Pi=3.141592653589793238462643;
var
R: real;
D: integer;
dec: integer;
n: char;
function Volumen(R: real):real;
begin
Volumen:= (4/3)*Pi*R*R*R;
end;
function Area(R: real):real;
begin

Area:= 4*Pi*R*R;
end;
begin
writeln('Bienvenido, antes de empezar especifique si desea calcular rea o volumen de la esfera (a/v)');
readln(n);
CASE n of 'v':
begin
repeat
writeln('¨Cu ntos decimales necesita usar (0-9)?');
readln(d);
if (0>d) or (d>9) then write ('Ingrese un n£mero entre 0 y 9.');
until (0<=d) and (d<=9);
repeat
writeln('Ingrese el radio de la esfera.');
readln(R);
if R > 0 then
write ('Esfera de radio ',R:2*d:d, ' tiene volumen ',Volumen(R):2*d:d) else
write ('El radio ingresado no es un n£mero mayor a 0.');
writeln();
writeln ('Desea continuar? (s/n)');
readln(n);
until n='n';
writeln('Adios presione cualquier tecla para terminar.');
readln();
end;
'a':
begin
repeat
writeln('¨Cu ntos decimales necesita usar (0-9)?');
readln(d);
if (0>d) or (d>9) then write ('Ingrese un n£mero entre 0 y 9.');
until (0<=d) and (d<=9);
repeat
writeln('Ingrese el radio de la esfera.');
readln(R);
if R > 0 then
write ('Esfera de radio ',R:2*d:d, ' tiene rea ',Area(R):2*d:d) else
write ('El radio ingresado no es un n£mero mayor a 0.');
writeln();
writeln ('Desea continuar? (s/n)');
readln(n);
until n='n';
writeln('Adios presione cualquier tecla para terminar.');
end;
end;
end.

la funcion volumen la teniai estaba mala ahi la arregle
@angcerpa
Avatar de Usuario
ANGeee
Mechón
 
Mensajes: 12
Registrado: Mié Ago 12, 2009 8:12 pm
Campus: Casa Central

Re: NO COMPILA, help

Notapor oliverm » Vie Jul 16, 2010 9:30 pm

buena gracias, a puro ocio no más
No sabrías cómo hacer si pongo "h" por ejemplo cuando me pregunta si deseo continuar, que diga la opción digitada no es válida intente nuevamente, o cuando pide números lo mismo o cuando pregunta area o volumen...

gracias :)
oliverm
Mechón
 
Mensajes: 17
Registrado: Sab May 22, 2010 3:43 pm
Campus: Casa Central

Re: NO COMPILA, help

Notapor ANGeee » Sab Jul 17, 2010 1:37 am

siipos obvio que se hacerlo ;D xd
la forma mas estándar pa validar los datos es mas o menos asi, dependiendo si quieres recibir un numero o un carácter o una cadena de caracteres

repeat
writeln('Bienvenido, antes de empezar especifique si desea calcular rea o volumen de la esfera (a/v)');
readln(n);
if (n<>'a') and (n<>'v') then
writeln('debe ingresar a o v');
until (n='a') or (n='v');

y asi pos o si queres que te ingrese una edad de alguien y tiene que ser mayor de edad por ejemplo:

repeat
writeln('ingrese edad ');
readln(n);
until n>=18;

de ahi hay cosas mas raras para cambiar de caracter a numero y de numero a caracter si es necesario en tu validación pero eso lo veras en clases
Última edición por ANGeee el Sab Jul 17, 2010 10:41 am, editado 1 vez en total
@angcerpa
Avatar de Usuario
ANGeee
Mechón
 
Mensajes: 12
Registrado: Mié Ago 12, 2009 8:12 pm
Campus: Casa Central

Re: NO COMPILA, help

Notapor oliverm » Sab Jul 17, 2010 3:28 am

ANGeee escribió:siipos obvio que se hacerlo ;D xd
la forma mas estándar pa validar los datos es mas o menos asi, dependiendo si quieres recibir un numero o un carácter o una cadena de caracteres

repeat
writeln('Bienvenido, antes de empezar especifique si desea calcular rea o volumen de la esfera (a/v)');
readln(n);
if (n<>a') and (n<>'v') then
writeln('debe ingresar a o v');
until (n='a') or (n='v');

y asi pos o si queres que te ingrese una edad de alguien y tiene que ser mayor de edad por ejemplo:

repeat
writeln('ingrese edad ');
readln(n);
until n>=18;

de ahi hay cosas mas raras para cambiar de caracter a numero y de numero a caracter si es necesario en tu validación pero eso lo veras en clases

puta que me siento wn xD
oliverm
Mechón
 
Mensajes: 17
Registrado: Sab May 22, 2010 3:43 pm
Campus: Casa Central


Volver a Lenguaje Pascal

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron