Programación General > Pascal

 Problemas Utilización: Dos "if" Y Un "else"

(1/2) > >>

Luis_1986:
Buenas!!

Tengo este codigo, en el cual estoy tratando de ejemplificar el uso del "IF":

PROGRAM prueba;
USES crt;
VAR
      numero:integer;
BEGIN
     clrscr;
     writeln ('Ingrese un número'); readln (numero);

    IF numero<100 THEN
        writeln ('El número es menor a 100');
    IF numero>100 THEN
        writeln ('El número es mayor a 100')
    ELSE
          writeln ('El número es igual a 100');    
    readln
END.

Deseo ejemplificar el uso del "IF", y segun yo habia aprendido al escribir lo que esta en rojo al ingresar un valor mayor a 100 (ejem. 101) mostraria "El número es mayor a 100"; el otro caso sería si el valor es menor a 100 (ejem. 99) mostraria "El número es menor a 100"; y en el caso del ELSE al ser igual a 100 entonces mostraria "El número es igual a 100".

Bueno aquí viene mi verdadera pregunta.  Porque razón utilizando ese codigo al ingresar un valor menor a 100 me escribe lo que aparece en el primer "IF" y lo que aparece en el "ELSE"?

Pido disculpas si al ingresar el código e faltado a alguna norma del foro, pero no e encontrado información relacionada sobre este problema (se podría decir que el mismo codigo es anticuado) pero ni consultando con compañeros le e encontrado respuesta, espero que ustedes me puedan responder porque pasa eso.

 :blink: Se me olvidaba agregar que el programa lo escribi en Pascal 7.0

shakka:
No tengo compilador a la mano para probarlo, pero recuerdo que era algo asi...

IF numero<100 THEN BEGIN
  writeln ('El número es menor a 100');
END
ELSE BEGIN
  IF numero>100 THEN BEGIN
    writeln ('El número es mayor a 100');
  END
  ELSE BEGIN
    writeln ('El número es igual a 100');
  END
END

posman:
te falta pone un ELSE despues del primer IF

Te deberia quedar algo como lo que pusieron en el mensaje anterior:


--- Código: Text --- IF numero&#60;100 THEN  writeln ('El número es menor a 100');ELSE &#60;-- te falto este  IF numero&#62;100 THEN    writeln ('El número es mayor a 100')  ELSE    writeln ('El número es igual a 100');   

Luis_1986:
Le/s agradezco su ayuda con la solucion de este codigo, pues bien, yo quisiera que me resuelvan la siguiente inquietud: por que con el codigo anterior cuando ingreso 99 me tira dos mesanjes: a) "Numero menor a 100"  y B) "numero igual a 100" :( , pues alli lo me tendría que mostrar es solo "numero es menor a 100" no los dos.  

Gracias de antemano!!

ProfesorX:
La solucion ya te la dieron, te falta un else, esa es la razon, al faltar el else se toma como 2 if separados, y no anidados, entonces, en el primer if, si el numero es menor, imprime que el numero es menor, y al llegar al segundo if, pregunta si es mayor, y como no es mayor, no imprime el mensaje de "es mayor" PERO como tiene un else, el else del segundo if se cumple si el numero es menor o igual, asi que vuelve a imprimir el mensaje.


Si aun sigues sin entender porque, entonces te recomiendo que estudies sobre los if anidados, y que le preguntes a tu maestro y que te haga una corrida de escritorio, asi comprenderas mejor porque.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa