• Domingo 22 de Diciembre de 2024, 17:46

Autor Tema:  Que Sucede?  (Leído 2153 veces)

lizzmdq

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Que Sucede?
« en: Domingo 6 de Abril de 2008, 23:34 »
0
Hola a todos , bueno esta haciendo un pequeño programa , que la maquina elija un numero del 1 al 100 y que el usuario tenga 7 oportunidades para advinarlo, lo que pasa es que no me corre y el error que me da no lo identifico , aqui se los dejo.

Código: Text
  1. program game;
  2. uses crt;
  3. var
  4. a,ingreso,ai,i,b:integer;
  5. begin
  6.   ai:=0;
  7.   repeat
  8.   for i:=1 to 100 do
  9.   begin
  10.   if keypressed then
  11.   ai:=i;
  12.   end;
  13.   until ai<>0;
  14.   clrscr;
  15.     Writeln(' El juego consiste en adviniar un numero del 1 al 100 en 7 oportunidades');
  16.       repeat
  17.       ingreso:=ingreso+1;
  18.     writeln('Por favor ingrese un numero del 1 al 100');
  19.     readln(b);
  20.       if ai > b then
  21.       begin
  22.       writeln('El Numero a advinar es mayor');
  23.       end;
  24.       if ai < b then
  25.       writeln('El numero a advinar es menor') else
  26.       writeln('Usted a acertado');
  27.       until ai=b or ingreso=7;
  28.     if ai=b then
  29.                 writeln('Ganasteee!') else
  30.     writeln('Perdiste!');
  31. readkey;
  32. end.
  33.  

salu2

robbie110487

  • Miembro activo
  • **
  • Mensajes: 66
    • Ver Perfil
Re: Que Sucede?
« Respuesta #1 en: Lunes 7 de Abril de 2008, 06:30 »
0
Solo pon entre parentesis las condiciones del segundo until:
Código: Text
  1. until (ai=b) or (ingreso=7);
  2.  

Asi deberia correr

 :comp:

lizzmdq

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Que Sucede?
« Respuesta #2 en: Martes 8 de Abril de 2008, 02:46 »
0
Gracias era eso , pero hay un problema en las operaciones. siempre que pongo un numero para adivinar me dice que es mayor o menor depende el caso y luego usted a acertado  :huh:

por que sera?

salu2

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Que Sucede?
« Respuesta #3 en: Martes 8 de Abril de 2008, 20:51 »
0
Los if no estan bien anidados, revisalos.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

lizzmdq

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Que Sucede?
« Respuesta #4 en: Jueves 10 de Abril de 2008, 21:58 »
0
Quedo asi .

Código: Text
  1. program game;
  2. uses crt;
  3. var
  4. a,ingreso,ai,i,b:integer;
  5. begin
  6. clrscr;
  7.    writeln('Por Favor precione una tecla para que la maquina elija el numero a advinar y continue el juego');
  8.   ai:=0;
  9.   repeat
  10.   for i:=1 to 100 do
  11.   begin
  12.   if keypressed then
  13.   ai:=i;
  14.   end;
  15.   until ai<>0;
  16.  
  17.     Writeln(' El juego consiste en adviniar un numero del 1 al 100 en 7 oportunidades');
  18.       repeat
  19.       ingreso:=ingreso+1;
  20.     writeln('Por favor ingrese un numero del 1 al 100');
  21.     readln(b);
  22.       if ai > b then
  23.       begin
  24.       writeln('El Numero a advinar es mayor');
  25.       end;
  26.       if ai < b then
  27.       begin  
  28.       writeln('El numero a advinar es menor');
  29.                         end;
  30.                         if ai=b then
  31.       writeln('Usted a acertado');
  32.       until (ai=b) or (ingreso=7);
  33.     if ai=b then
  34.                 writeln('Ganasteee!') else
  35.     writeln('Perdiste!');
  36. readkey;
  37. end.
  38.  

Pero siempre el numero a adivinar es 100  :huh:

por que sera?

salu2

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Que Sucede?
« Respuesta #5 en: Viernes 11 de Abril de 2008, 02:07 »
0
Cita de: "lizzmdq"
Pero siempre el numero a adivinar es 100  :huh:

por que sera?
 
La vez pasada qie vi tu codigo no me habia dado cuenta, pero ahora que lo mencionas, el error esta en la forma que obtienes el numero a adivinar, usas un ciclo de 1 a 100, hasta que se pulse una tecla, pero no tomas en cuenta que el ciclo se termina tan rapido (en milesimas de segundo probablemente), que por lo tanto cuando tu pulsas, el numero i ya vale 100.

Mejor utiliza una funcion que te genere un numero aleatorio, no recuerdo en pascal, pero supongo que sera random, checa en la ayuda, o busca en google "random pascal"

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

lizzmdq

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Que Sucede?
« Respuesta #6 en: Sábado 12 de Abril de 2008, 01:17 »
0
Bueno quedo ahora.


Código: Text
  1. program game;
  2. uses crt;
  3. var
  4. a,ingreso,ai,i,b:integer;
  5. begin
  6. clrscr;
  7.        textcolor(black);
  8.        textbackground(white);
  9.   ingreso:=0;
  10.     randomize;
  11.     Writeln(' El juego consiste en adviniar un numero del 1 al 100 en 7 oportunidades');
  12.     ai:=random(99)+1;
  13.                 writeln('Presione una tecla para continuar');
  14.     readkey;
  15.     repeat
  16.       ingreso:=ingreso+1;
  17.       writeln('Por favor ingrese un numero del 1 al 100');
  18.                          readln(b);
  19.       if ai > b then
  20.       begin
  21.       writeln('El Numero a advinar es mayor');
  22.       end;
  23.       if ai < b then
  24.       begin
  25.       writeln('El numero a advinar es menor');
  26.                         end;
  27.                         if ai=b then
  28.       writeln('Usted a acertado');
  29.     until (ai=b) or (ingreso=7);
  30.         if ai=b then
  31.                       writeln('Ganasteee!') else
  32.           writeln('Perdiste T_________T');
  33. readkey;
  34. end.
  35.  
  36.  
  37.  

salu2