Repet_22_Acertar+nuemro+pensado+por+usuario

=__**Programa que acierta un número pensado por el usuario**__=

El usuario piensa un número del 1 al 100 y el programa lo acierta en 7 intentos, como máximo

code format="pascal" PROGRAM P_31_e_22 ; USES Crt ; VAR iNumeroPropuesto,              { Número propuesto por el programa } iLimiteInf, iLimiteSup,  { Límites del rango donde está el número } iRespuesta,                       { Respuesta del usuario 1, 2, 3 } iNumeroIntentos : Integer ;       { Número de intentos efectuados } boAcertado : Boolean ; cEspera   : Char ; BEGIN { Mostrar mensaje explicativo } Writeln ; Writeln ; Writeln ('Piensa un número del 1 al 100 y pulsa una tecla') ; Writeln (' (Te lo adivinar‚ en 7 intentos, como máximo)') ; cEspera := Readkey ; { Inicializar variables:          } boAcertado := FALSE ;         { Por el momento no se ha acertado } iNumeroIntentos := 0 ;        { Número de intentos es 0          }

iLimiteInf := 0 ;        { Límites del rango de valores posibles } iLimiteSup := 100 ;

REPEAT { Proponer el valor central (o medio) del rango } iNumeroIntentos := iNumeroIntentos + 1 ; iNumeroPropuesto := (iLimiteSup + iLimiteInf) DIV 2 ;

Writeln ; Writeln ; Writeln ('Mi número ', iNumeroPropuesto, ', con respecto ',               'al que has pensado es :') ; Writeln ('       1.  Igual') ; Writeln ('       2.  Mayor') ; Writeln ('       3.  Menor') ; Writeln ; { Leer la respuesta } REPEAT Write  ('Pulsa el número correspondiente a la respuesta: ') ; Readln (iRespuesta) ; UNTIL (1 <= iRespuesta) AND (iRespuesta <= 3) ;

{ Según la respuesta } CASE iRespuesta OF          1 :                                    { Numero acertado } boAcertado := TRUE ; 2 :                   { Numero en el semirango inferior } iLimiteSup := iNumeroPropuesto - 1 ; 3 :                   { Numero en el semirango superior } iLimiteInf := iNumeroPropuesto + 1 ; END { case } UNTIL boAcertado OR (iNumeroIntentos = 7) ;

Writeln ;                            { Mostrar la repuesta final } IF boAcertado THEN Writeln ('Acertado en el intento: ', iNumeroIntentos) ELSE Writeln ('Te has equivocado o has hecho trampa') ;

Writeln ; Writeln ; cEspera := Readkey ;

END. { Fin de REPET_22.PAS } code