[ Foro de Pascal ]

ayuda numero: exactamente 3 digitos

24-Mar-2014 17:06
Invitado (fer97)
7 Respuestas

hola , queria preguntar en este foro como puedo hacer un programita que permita seleccionar un numero de tres digitos estrictamente con unidades y centenas diferentes.
se que con div y mod puede ser lo que no se es como hacer la validacion en si, eso es tod gracias por su ayuda.


24-Mar-2014 22:08
Luis Torres (+12)

¿El número lo lees desde el teclado?


25-Mar-2014 14:39
Invitado (fer97)

Hola compañero, si el numero se lee desde teclado.gracias si puedes ayudarme


25-Mar-2014 14:46
Nacho Cabanes (+32)

La validación se suele hacer con un "repeat..until", que te pida valores hasta que cumpla unas ciertas condiciones.

En tu caso, el número será de 3 cifras si es mayor que  99 y menor que 1000, la primera de esas tres cifras la puedes saber dividiendo (div) entre 100 y la última de esas cifras te la da el resto de la división (mod) entre 10.


25-Mar-2014 16:42
Invitado (fer97)

pero como hago la estructura del programa para usar ese repeat y lo del 99 y 1000, por favor gracias es que estoy perdido


25-Mar-2014 17:09
Luis Torres (+12)

Ok. Entendí que el primer y último dígito deben ser distintos. Aquí te dejo el código. Al principio se valida para que el número sea realmente de tres cifras, si no lo es sigue pidiéndolo hasta cumplir con ese requisito; luego verifica que la primera y última cifras sean diferentes, en caso afirmativo el programa finaliza. Se hace uso de una variable booleana que se inicializa en 'false' y cambia a 'true' cuando la condición se cumple, de esa forma se sale del repeat-until. Saludos.

 
program NumeroTresCifrasDistintas;
(* Programa que lee números hasta que sea un valor de *) 
(* tres cifras con el dígito correspondiente a las unidades *)
(* distinto al dígito corresponidente a las centenas *)
 
var
  num: integer;
  valido: boolean;
 
BEGIN
 valido:= false;
 repeat
   { Nos aseguramos que el número sea de tres cifras realmente }
   repeat
      write('Introduzca un numero de tres cifras: ');
      readln(num);
   until (num < 1000) and (num>99);	
   { Si el dígito de las unidades (num mod 10) es distinto al de las centenas (num div 100) haga que valido sea true }   
   if (num mod 10) <> (num div 100) then
    begin
     valido:= true;
	 writeln('Usted introdujo un numero valido.');
	end 
   else
     writeln('El primer y ultimo digito deben ser diferentes.');   
 until valido;
 readln;
END.  
 

25-Mar-2014 19:40
Invitado (fer97)

ufff luis muy bueno tu programa ahora si entiendo eso del div , el mod y el repeat aplicados a un programa, gracias colega, quiza eres profesor no lo se pero muy agradecido.


25-Mar-2014 23:13
Invitado (fer97)

Editado por el administrador.

Consulta no relacionada con la anterior, movida a un nuevo hilo:
http://www.aprendeaprogramar.com/mod/forum/discuss.php?d=1176






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)