Pascal/Turbo Pascal - Duda en la instruccion CASE

 
Vista:

Duda en la instruccion CASE

Publicado por Ahmed (11 intervenciones) el 10/11/2013 20:25:10
Hola, buenas. Estoy creando un código que necesita un menu, pero necesito numerar 11 casos y mi duda es la siguiente:
Dado que mi variable opcion no puede ser de tipo char, ya que necesito numerar 11 casos como ya he dicho antes, ¿la instrucción CASE admite strings? ¿O estoy obligado a usar IF anidados para hacer mi menu?
Muchas gracias de antemano. Os copio la parte del código en la que está el menu, por si ayuda en algo:
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
PROGRAM practica8;
VAR
	opcion: string[2];
(Varios subprogramas por aqui)
BEGIN
	REPEAT
	Menu;
	readln(opcion);
		CASE opcion OF
			'1': MostrarNombre;
			'2': OperacionesConEnteros;
			'3': OperacionesConReales;
			'4': OperacionesConCaracteres;
			'5': CalcularDiaDePascua;
			'6': CalcularOrden;
			'7': Cuatrimestre;
			'8': Dado;
			'9': PrimosIntervalo;
			'10':SumaPrimos;
			'0': BEGIN
					writeln('Hasta luego!');
					readln;
				 END;
		END;
	UNTIL (opcion='0');
END.

Al compilar me da error, asi que he supuesto que CASE no puede usar strings, pero por si acaso pregunto aquí.
Saludos y gracias
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

Duda en la instruccion CASE

Publicado por ramon (2158 intervenciones) el 10/11/2013 22:23:14
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
{Exacto estringes no pero si números con lo cual tienes una buena gama o por ejemplo así}
 
  program menu;
  uses
     crt;
  var
    tecla : char;
    px, py : integer;
 
  procedure marcamenu(x, y : integer; acion : char);
  begin
     if upcase(acion) = 'Q' then
     textcolor(0)
    else
     textcolor(15);
         gotoxy(x,y);write(' -----------------');
     gotoxy(x,y + 1);write('|');
     gotoxy(x + 18,y + 1);write('|');
     gotoxy(x,y + 2);write(' -----------------');
     textcolor(15);
  end;
 
   procedure menugeneral;
   var
     opci : integer;
     salir : boolean;
    begin
      opci := 1;
      salir := false;
      px := 10;
      py := 2;
   repeat
      clrscr;
      gotoxy(10,1);write('******** Menu General ********');
      gotoxy(10,3);write('  Opcion Numero 1');
      gotoxy(10,5);write('  Opcion Numero 2');
      gotoxy(10,7);write('  Opcion Numero 3');
      gotoxy(10,9);write('  Opcion Numero 4');
      gotoxy(10,11);write('  Opcion Numero 5');
      gotoxy(10,13);write('  Opcion Numero 6');
      gotoxy(10,15);write('  Opcion Numero 7');
      gotoxy(10,17);write('  Opcion Numero 8');
      gotoxy(10,19);write('  Opcion Numero 9');
      gotoxy(10,21);write('  Salir');
      marcamenu(px,py,' ');
      tecla := readkey;
      marcamenu(px,py,'Q');
      if tecla = #72 then
      begin
         py := py - 2;
         opci := opci - 1;
         if opci < 1 then
         begin
         opci := 1;
         py := py + 2;
         end;
      end;
      if tecla = #80 then
      begin
         py := py + 2;
         opci := opci + 1;
         if opci > 10 then
         begin
         opci := 10;
         py := py - 2;
         end;
      end;
   if tecla = #13 then
   begin
    case opci of
  1 :;
  2 :;
  3 :;
  4 :;
  5 :;
  6 :;
  7 :;
  8 :;
  9 :;
 10 : salir := true;
    end;
  end;
   until salir = true;
  end;
 
  begin
     clrscr;
     menugeneral;
  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