No sabía si continuar preguntando en el hilo anterior que hice o hacer uno nuevo. Me decidí por lo segundo ya que es un ejercicio distinto y creo que se hace más fácil para aquellos, que como yo, andan buscando respuestas.
Voy al grano. Ayer terminé el Ejercicio 4.6 y muy contento. Como hice con los programas anteriores, se lo hice probar a mi mujer. Todo era alegría hasta que decidió poner dos números iguales y uno distinto, en vez de tres distintos para que el programa haga lo suyo.
Bueno, lejos de frustrarme (un poco si, bueno), me hizo dar cuenta de que no está mal, o por lo menos eso creo yo, tener en cuenta todas las opciones más allá del enunciado del problema.
Creo que el programa cumple el enunciado, pero siempre puede venir alguien y hacerte notar algo que no tenías en cuenta.
Seguramente voy a hacer más hilos como este a medida que avance en el aprendizaje buscando una vuelta de tuerca a lo que dice el enunciado, no porque sea un tipo complica, sino por lo que dije más arriba, que está bueno abarcar todas las opciones que puedan surgir; en este caso, lo que me pasó cuando mi mujer hizo algo que a mi no se me había ocurrido.
Quizá peco de perfeccionista queriendo hacer esto, pero es un buen ejercicio (creo) eso de buscar los flancos débiles de un programa por más sencillo que parezca.
Los que todavía no se fueron del post, les dejo el algoritmo y, por supuesto, acepto las críticas si se puede mejorar. Cuando logre resolver lo de que pasa cuando se ingresan dos números igual, volveré a consultar por sus consejos.
Proceso numero_mayor
Definir num1,num2,num3 Como Entero;
Escribir "Ingrese el primer número";
Leer num1;
Escribir "Ingrese el segundo número";
Leer num2;
Escribir "Ingrese el tercer número";
Leer num3;
Si num1>num2 Y num1>num3 Entonces
Escribir "El primer número es el mayor.";
SiNo
Si num2>num1 Y num2>num3 Entonces
Escribir "El segundo número es el mayor.";
SiNo
Si num3>num1 Y num3>num2 Entonces
Escribir "El tercer número es el mayor.";
SiNo
Escribir "Todos los números son iguales.";
FinSi
FinSi
FinSi
FinProceso
Cuando hablo de resolver lo de los dos números iguales, me refiero a hacerlo siempre con las herramientas aprendidas hasta el momento. Seguramente hay más comandos que ayuden a hacerlo, pero la idea es hacerlo con lo recién aprendido.
Ahora sí, me despido y desde ya gracias por sus respuestas.
Es un buen acercamiento, pero...
Imagina que te dan los números 5, 3, 5. La respuesta esperable es más algo como "El mayor número es 5" que algo como "El mayor número está en la primera posición y en la tercera".
La forma sencilla de solucionarlo es comparar, no con > sino con >=
Excelente, Nacho. Justo estaba mirando el pseudocódigo y se me asomó a la cabeza el >=, pero todavía no le encuentro la vuelta. Estoy en eso.
¡Gracias!
Bueno, creo que al final lo tengo. Una mala interpretación mía del enunciado casi me vuelve loco. Gracias Nacho por hacermelo notar.
No había que poner en que lugar estaba el número mayor sino solo decir cual ES el mayor.
Dejo de nuevo el código, mucho más satisfecho con el resultado.
Proceso numero_mayor
Definir num1,num2,num3 Como Entero;
Escribir "Ingrese el primer número";
Leer num1;
Escribir "Ingrese el segundo número";
Leer num2;
Escribir "Ingrese el tercer número";
Leer num3;
Si num1=num2 Y num1=num3 Y num2=num3 Entonces
Escribir "Todos los números son iguales.";
SiNo
Si num1>=num2 Y num1>=num3 Entonces
Escribir "El número mayor es: ", num1;
SiNo
Si num2>=num1 Y num2>=num3 Entonces
Escribir "El número mayor es: ", num2;
SiNo
Si num3>=num1 Y num3>=num2 Entonces
Escribir "El número mayor es: ", num3;
FinSi
FinSi
FinSi
FinSi
Saludos.
Perfecto.
Un último detalle avanzado: puedes eliminar el último "SI NO", que queda por eliminación (si no son iguales, ni el mayor es el primero, ni lo es el segundo... necesariamente lo tiene que ser el tercero).
Tenés razón, es una obviedad ese SiNo. Muchas, muchísimas gracias. Me motiva mucho a seguir. Saludos.
(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.)