[ Foro de Pseudocódigo ]

Dilemas con el Ejercicio 4.6 - Mayor de tres números

07-Jul-2020 20:03
Diego Coronel (+2)
5 Respuestas

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.


07-Jul-2020 20:08
Nacho Cabanes (+84)

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 >=


07-Jul-2020 20:19
Diego Coronel (+2)

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!


07-Jul-2020 21:11
Diego Coronel (+2)

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.


07-Jul-2020 21:34
Nacho Cabanes (+84)

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).


07-Jul-2020 21:40
Diego Coronel (+2)

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.)