Pascal/Turbo Pascal - Repeat until

   
Vista:
Imágen de perfil de Misael

Repeat until

Publicado por Misael (34 intervenciones) el 07/04/2015 01:49:01
Como hago este programa sin la opción 10 salir, necesito que cada bes que ingrese un numero del menú me pregunte si deseo salir s/n, si elige no me debelaba a la opción de ingresar un numero del menú, y si ingre la s = si que salga del programa;
este programa ya me funciono y compila perfectamente ahora necesito hacerle los cambios que mencione anteriormente.
Creo que es con: repeat y until gracias por su ayuda
les adjunto el programa:

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
Program Menu;
Uses crt;
Var x:integer;
Salir:char;
Begin
Salir:= ‘n’;
While salir = ‘n’ do
Begin
Clrscr;
Writeln(‘Menú Partes de la computadora’);
Writeln (‘1. Mouse’);
Writeln(‘2. Teclado’);
Writeln(‘3. Monitor’);
Writeln(‘4. Parlantes’);
Writeln(‘5. Unidad de DVD ’);
Writeln(‘6. Tarjeta Madre’);
Writeln(‘7.  Procesador’);
Writeln(‘8. Disco Duro’);
Writeln(‘9. Memoria Ram’);
Writeln(‘10. Salir’);
Readln(x);
If ( x = 1 ) then
Begin
Writeln(‘aki va la definición dl mouse’);
End;
If ( x = 2 ) then
Begin
Writeln(‘aki va la definición dl Teclado’);
If ( x = 3 ) then
Begin
Writeln(‘aki va la definición dl monitor’);
End;
If ( x = 4 ) then
Begin
Writeln (‘aki va la definición dl parlantes’);
End;
If ( x = 5 ) then
Begin
Writeln (‘aki va la definición dl Unidad de DVD’);
End;
If ( x = 6 ) then
Begin
Writeln (‘aki va la definición dl Tarjeta Madre’’);
End;
If ( x = 7 ) then
Begin
Writeln (‘aki va la definición dl Procesador’);
End;
If ( x = 8 ) then
Begin
Writeln (‘aki va la definición dl Disco Duro’’);
End;
If ( x = 9 ) then
Begin
Writeln (‘aki va la definición dl Memoria Ram’);
End;
If ( x = 10 ) then
Writeln (‘DESEA SALIR S/N   ’); READLN (SALIR);
End;
Repeat until keypressed
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

Repeat until

Publicado por Juan (10 intervenciones) el 07/04/2015 14:59:47
Buenas Misael

Sería más o menos como dices, si les dieses un poco de vueltas, llegarías sin problemas a la solución. Tendrías que colocar el REPEAT antes de "MENÚ PARTES DE LA COMPUTADORA". Quitas la opción 10 y después de terminar todas las funciones escribes (si mi memoria no me falla):

WRITELN('DESEA SALIR (S/N)?');
READLN(salir);
UNTIL (salir <> s' ) OR (salir <> 'S')

Así sólo te saldría del bucle si el usuario tecla el caracter 'S' o 's', de lo contrario se volvería a lanzar el bucle. Como ves no es muy difícil y estabas muy cerca de encontrar la solución

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
1
Comentar

Repeat until

Publicado por David (139 intervenciones) el 07/04/2015 16:22:44
Te propongo la siguiente solución:

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
Program Menu;
Uses crt;
Var x:char;
Salir:char;
 
Begin
 
  repeat
    Clrscr;
    Writeln('Men£ Partes de la computadora');
    Writeln ('1. Mouse');
    Writeln('2. Teclado');
    Writeln('3. Monitor');
    Writeln('4. Parlantes');
    Writeln('5. Unidad de DVD');
    Writeln('6. Tarjeta Madre');
    Writeln('7.  Procesador');
    Writeln('8. Disco Duro');
    Writeln('9. Memoria Ram');
    REPEAT
      Readln(x);
    UNTIL X in ['1'..'9'];
  Case x of
    '1':writeln('aki va la definición dl mouse');
    '2':Writeln('aki va la definición dl Teclado');
    '3':Writeln('aki va la definición dl monitor');
    '4':Writeln ('aki va la definición dl parlantes');
    '5':Writeln ('aki va la definición dl Unidad de DVD');
    '6':Writeln ('aki va la definición dl Tarjeta Madre');
    '7':Writeln ('aki va la definición dl Procesador');
    '8':Writeln ('aki va la definición dl Disco Duro');
    '9':Writeln ('aki va la definición dl Memoria Ram');
  END;
    WRITELN('¨DESEA SALIR(S/N)?');
    REPEAT
    SALIR:=UPCASE(READKEY);
    uNTIL (SALIR IN ['S','N']);
until (salir='S');
End.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Misael

Repeat until

Publicado por Misael (34 intervenciones) el 07/04/2015 17:04:28
Muchísimas Gracias es muy eficiente, si me funciono , me ahorre muchas lineas de codigo...
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