Pascal/Turbo Pascal - NECESITO AYUDA URGENTE CON MENÚ EN PASCAL

 
Vista:

NECESITO AYUDA URGENTE CON MENÚ EN PASCAL

Publicado por Alejandro (5 intervenciones) el 22/09/2012 16:21:28
Tengo un programa creado en pascal que calcula el área y perímetro de un circunferencia, del cuadrado que la contiene y de la circunferencia mayor que contiene a ambos. El problema viene en el menu, si tengo 4 opciones funciona perfecto, pero si le meto una opción mas (opción 5) me da error al compilar y no se por qué. Agradezco vuestra ayuda ;)


program FigurasContenidas;

{Este programa calcula la longitud (perímetro) y área de una circunferencia (circunferencia 1),
del cuadrado que la contiene y de la circunferencia que contiene a ambos (circunferencia 2)}

USES CRT;

VAR Rcirculo1:REAL; {Radio de la circunferencia 1}
VAR Lcirculo1,Acirculo1:REAL; {Longitud y área de la circunferencia 1}
VAR Lcuadrado,Acuadrado:REAL; {Perímetro y área del cuadrado}
VAR Lcirculo2,Acirculo2:REAL; {Longitud y área de la circunferencia 2}
VAR Rcirculo2:REAL;
VAR OPCION:INTEGER;


BEGIN

WRITELN ('LONGITUD Y AREA DE UNA CIRCUNFERENCIA 1, CUADRADO Y CIRCUNFERENCIA 2');
WRITELN;
WRITE ('ESCRIBA RADIO: ');
READLN (Rcirculo1);
WRITELN;


WRITELN ('MENU PRINCIPAL');
WRITELN;
WRITELN ('1. LONGITUD Y AREA DE LA CIRCUNFERENCIA 1');
WRITELN;
WRITELN ('2. LONGITUD Y AREA DEL CUADRADO');
WRITELN;
WRITELN ('3. LONGITUD Y AREA DE LA CIRCUNFERENCIA 2');
WRITELN;
WRITELN ('4. BORRAR');
WRITELN;
WRITELN ('5. SALIR');
WRITELN;

Repeat; Delay (1000);

WRITE ('SELECCIONA FUNCION: ');
READLN (OPCION);
WRITELN;

CASE OPCION OF

1:
BEGIN
WRITELN ('LONGITUD DE LA CIRCUNFERENCIA 1: ');

Lcirculo1:=2*3.1416*Rcirculo1;
Acirculo1:=Pi*sqr(Rcirculo1);

WRITELN (Lcirculo1:5:2);
WRITELN;

WRITE ('AREA DE LA CIRCUNFERENCIA 1: ');
WRITELN (Acirculo1:5:2);
WRITELN;

END;

2:
BEGIN
WRITELN ('LONGITUD DEL CUADRADO: ');

Lcuadrado:=4*(2*Rcirculo1);
Acuadrado:=sqr(2*Rcirculo1);

WRITELN (Lcuadrado:5:2);
WRITELN;

WRITE ('AREA DEL CUADRADO: ');
WRITELN (Acuadrado:5:2);
WRITELN;

END;

3:
BEGIN
WRITELN ('LONGITUD DE LA CIRCUNFERENCIA 2: ');

Rcirculo2:=Sqrt(Sqr(Rcirculo1)+Sqr(Rcirculo1));
Lcirculo2:=2*Pi*Rcirculo2;
Acirculo2:=Pi*sqr(Rcirculo2);

WRITELN (Lcirculo2:5:2);
WRITELN;

WRITE ('AREA DE LA CIRCUNFERENCIA 2: ');
WRITELN (Acirculo2:5:2);
WRITELN;

END;

4:
ClrScr;
END;

5:
EXIT;
END;

UNTIL (OPCION=5);
READKEY;

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

NECESITO AYUDA URGENTE CON MENÚ EN PASCAL

Publicado por ramon (2158 intervenciones) el 22/09/2012 17:35:01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{Comprueba este pequeño fragmento del programa tuyo  con el tuyo real y veras el fallo }
 
CASE OPCION OF
1 : BEGIN
     WRITELN('LONGITUD DE LA CIRCUNFERENCIA 1: ');
     Lcirculo1 := 2 * 3.1416 * Rcirculo1;
     Acirculo1 := Pi * sqr(Rcirculo1);
     WRITELN(Lcirculo1:5:2);
     WRITELN;
     WRITE('AREA DE LA CIRCUNFERENCIA 1: ');
     WRITELN(Acirculo1:5:2);
     WRITELN;
    END;
2 : BEGIN
      WRITELN('LONGITUD DEL CUADRADO: ');
      Lcuadrado := 4 * (2 * Rcirculo1);
      Acuadrado := sqr(2 * Rcirculo1);
      WRITELN(Lcuadrado:5:2);
      WRITELN;
      WRITE('AREA DEL CUADRADO: ');
      WRITELN(Acuadrado:5:2);
      WRITELN;
     END;
3 : BEGIN
    WRITELN ('LONGITUD DE LA CIRCUNFERENCIA 2: ');
    Rcirculo2 := Sqrt(Sqr(Rcirculo1) + Sqr(Rcirculo1));
    Lcirculo2 := 2 * Pi * Rcirculo2;
    Acirculo2 := Pi * sqr(Rcirculo2);
    WRITELN(Lcirculo2:5:2);
    WRITELN;
    WRITE('AREA DE LA CIRCUNFERENCIA 2: ');
    WRITELN(Acirculo2:5:2);
    WRITELN;
   END;
4 : ClrScr;
5 : EXIT;
END;
UNTIL (OPCION = 5);
READKEY;
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

NECESITO AYUDA URGENTE CON MENÚ EN PASCAL

Publicado por Alejandro (5 intervenciones) el 23/09/2012 22:49:15
Muchas gracias. Una pregunta más, ¿se podría hacer algo para que si se elige la opción 4 comenzase el programa de nuevo? Es decir, te pidiese el radio de nuevo y todo. Algo así como una especie de reinicio. Un saludo!
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

NECESITO AYUDA URGENTE CON MENÚ EN PASCAL

Publicado por ramon (2158 intervenciones) el 24/09/2012 00:30:28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
{A ver si esto sirve}
 
program FigurasContenidas;
 
{Este programa calcula la longitud (perímetro) y área de una circunferencia (circunferencia 1),
del cuadrado que la contiene y de la circunferencia que contiene a ambos (circunferencia 2)}
 
USES CRT;
 
VAR
    Rcirculo1 : REAL;	 {Radio de la circunferencia 1}
    Lcirculo1, Acirculo1 : REAL;	{Longitud y área de la circunferencia 1}
    Lcuadrado, Acuadrado : REAL;	{Perímetro y área del cuadrado}
    Lcirculo2, Acirculo2 : REAL;	{Longitud y área de la circunferencia 2}
    Rcirculo2 : REAL;
    OPCION : char;
 
 procedure LONGITUD_Y_AREA_DE_LA_CIRCUNFERENCIA1;
 begin
   Rcirculo1 := 0;
   clrscr;
   repeat
     write('Terminar Radio = [0] Otro Valor Continua');
     writeln;
     WRITE('ESCRIBA RADIO: ');
     READLN (Rcirculo1);
     clrscr;
     if Rcirculo1 > 0 then
     begin
     Lcirculo1 := 2 * 3.1416 * Rcirculo1;
     Acirculo1 := Pi * sqr(Rcirculo1);
     WRITELN('Longitud = ',Lcirculo1:5:2);
     end;
   until Rcirculo1 = 0;
 end;
 
  procedure longitud_del_cuadrado;
  begin
     Rcirculo1 := 0;
     clrscr;
   repeat
     write('Terminar Longitud = [0] Otro Valor Continua');
     writeln;
     WRITE('ESCRIBA Longitud : ');
     READLN (Rcirculo1);
     clrscr;
     if Rcirculo1 > 0 then
     begin
        Lcuadrado := 4 * (2 * Rcirculo1);
        Acuadrado := sqr(2 * Rcirculo1);
        WRITELN('Longitud = ',Lcuadrado:5:2);
        WRITELN;
        WRITE('AREA DEL CUADRADO: ');
        WRITELN('Area = ',Acuadrado:5:2);
     end;
   until Rcirculo1 = 0;
  end;
 
  procedure LONGITUD_Y_AREA_DE_LA_CIRCUNFERENCIA2;
 begin
   Rcirculo1 := 0;
   clrscr;
   repeat
     write('Terminar Radio = [0] Otro Valor Continua');
     writeln;
     WRITE('ESCRIBA RADIO: ');
     READLN (Rcirculo1);
     clrscr;
     if Rcirculo1 > 0 then
     begin
        Rcirculo2 := Sqrt(Sqr(Rcirculo1) + Sqr(Rcirculo1));
        Lcirculo2 := 2 * Pi * Rcirculo2;
        Acirculo2 := Pi * sqr(Rcirculo2);
        WRITELN('Longitud = ',Lcirculo2:5:2);
        WRITELN;
        WRITE ('AREA DE LA CIRCUNFERENCIA : ');
        WRITELN('Area = ',Acirculo2:5:2);
     end;
   until Rcirculo1 = 0;
 end;
 
 
BEGIN
repeat
    clrscr;
    WRITELN ('MENU PRINCIPAL');
    WRITELN;
    WRITELN ('1. LONGITUD Y AREA DE LA CIRCUNFERENCIA 1');
    WRITELN;
    WRITELN ('2. LONGITUD Y AREA DEL CUADRADO');
    WRITELN;
    WRITELN ('3. LONGITUD Y AREA DE LA CIRCUNFERENCIA 2');
    WRITELN;
    WRITELN ('4. BORRAR');
    WRITELN;
    WRITELN ('5. SALIR');
    WRITELN;
    WRITE ('SELECCIONA FUNCION: ');
    OPCION := readkey;
    CASE OPCION OF
  '1': BEGIN
       WRITELN('LONGITUD DE LA CIRCUNFERENCIA');
       LONGITUD_Y_AREA_DE_LA_CIRCUNFERENCIA1;
       END;
  '2': BEGIN
       WRITELN ('LONGITUD DEL CUADRADO: ');
       longitud_del_cuadrado;
       END;
 
  '3': BEGIN
       WRITELN ('LONGITUD DE LA CIRCUNFERENCIA 2: ');
       LONGITUD_Y_AREA_DE_LA_CIRCUNFERENCIA2;
       END;
  '4': ClrScr;
  '5': EXIT;
END;
 
UNTIL (OPCION = '5');
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

NECESITO AYUDA URGENTE CON MENÚ EN PASCAL

Publicado por Alejandro (5 intervenciones) el 24/09/2012 00:56:03
Mmmmmm, no es eso exactamente lo que quiero. Quiero el programa tal cual, únicamente que si eliges la opción 4 comience de nuevo de 0. Es decir, te pida el radio y tal, hasta ahí únicamente he conseguido que borre la pantalla y que salte la opción de "Selecciona función", pero lo que me gustaría es que la borrase y comenzase a pedir el radio de nuevo.

Gracias de nuevo ;)
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

NECESITO AYUDA URGENTE CON MENÚ EN PASCAL

Publicado por ramon (2158 intervenciones) el 24/09/2012 18:08:50
program FigurasContenidas;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{Este programa calcula la longitud (perímetro) y área de una circunferencia (circunferencia 1),
del cuadrado que la contiene y de la circunferencia que contiene a ambos (circunferencia 2)}
 
USES CRT;
 
VAR Rcirculo1:REAL;	 {Radio de la circunferencia 1}
VAR Lcirculo1,Acirculo1:REAL;	{Longitud y área de la circunferencia 1}
VAR Lcuadrado,Acuadrado:REAL;	{Perímetro y área del cuadrado}
VAR Lcirculo2,Acirculo2:REAL;	{Longitud y área de la circunferencia 2}
VAR Rcirculo2:REAL;
VAR OPCION:INTEGER;
 
 
BEGIN
Repeat;
clrscr;
WRITELN ('LONGITUD Y AREA DE UNA CIRCUNFERENCIA 1, CUADRADO Y CIRCUNFERENCIA 2');
WRITELN;
WRITE ('ESCRIBA RADIO: ');
READLN (Rcirculo1);
WRITELN;
clrscr;
WRITELN ('MENU PRINCIPAL');
WRITELN;
WRITELN ('1. LONGITUD Y AREA DE LA CIRCUNFERENCIA 1');
WRITELN;
WRITELN ('2. LONGITUD Y AREA DEL CUADRADO');
WRITELN;
WRITELN ('3. LONGITUD Y AREA DE LA CIRCUNFERENCIA 2');
WRITELN;
WRITELN ('4. BORRAR');
WRITELN;
WRITELN ('5. SALIR');
WRITELN;
WRITE ('SELECCIONA FUNCION: ');
READLN (OPCION);
WRITELN;
clrscr;
CASE OPCION OF
 
1:
BEGIN
WRITELN ('LONGITUD DE LA CIRCUNFERENCIA 1: ');
 
Lcirculo1:=2*3.1416*Rcirculo1;
Acirculo1:=Pi*sqr(Rcirculo1);
 
WRITELN	(Lcirculo1:5:2);
WRITELN;
 
WRITE ('AREA DE LA CIRCUNFERENCIA 1: ');
WRITELN (Acirculo1:5:2);
WRITELN;
 
END;
 
2:
BEGIN
WRITELN ('LONGITUD DEL CUADRADO: ');
 
Lcuadrado:=4*(2*Rcirculo1);
Acuadrado:=sqr(2*Rcirculo1);
 
WRITELN	(Lcuadrado:5:2);
WRITELN;
 
WRITE ('AREA DEL CUADRADO: ');
WRITELN (Acuadrado:5:2);
WRITELN;
 
END;
3:
BEGIN
WRITELN ('LONGITUD DE LA CIRCUNFERENCIA 2: ');
 
Rcirculo2:=Sqrt(Sqr(Rcirculo1)+Sqr(Rcirculo1));
Lcirculo2:=2*Pi*Rcirculo2;
Acirculo2:=Pi*sqr(Rcirculo2);
 
WRITELN	(Lcirculo2:5:2);
WRITELN;
 
WRITE ('AREA DE LA CIRCUNFERENCIA 2: ');
WRITELN (Acirculo2:5:2);
WRITELN;
 
END;
 
4:
ClrScr;
 
5:
EXIT;
END;
writeln('Para Seguir Pulse [Enter]');
readln;
UNTIL (OPCION=5);
READKEY;
 
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

NECESITO AYUDA URGENTE CON MENÚ EN PASCAL

Publicado por ramon (2158 intervenciones) el 24/09/2012 21:26:06
1
2
3
4
5
6
7
8
9
10
11
12
13
{Disculpa Corrijo en la opción 4 inserta esto}
 
4 : begin
           clrscr;
WRITELN ('LONGITUD Y AREA DE UNA CIRCUNFERENCIA 1, CUADRADO Y CIRCUNFERENCIA 2');
WRITELN;
WRITE ('ESCRIBA RADIO: ');
READLN (Rcirculo1);
WRITELN;
clrscr;
      end;
 
{Lo anulas de arriba}
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