Documente Academic
Documente Profesional
Documente Cultură
Mximos y mnimos
Mximos y mnimos Uno de los problemas ms comunes en programacin es el de tener que buscar un mximo ( o un mnimo ) de un conjunto. Si pensamos en un proceso manual habra que: 1) tomar un valor y considerar que es el mximo ( porque es el primero) 2) tomar cada uno de los otros valores y compararlos con el elegido como mximo, si alguno de ellos lo supera le corresponde ocupar el lugar del mximo. Como podemos observar con el primer valor se realiza un proceso distinto que con los dems; el primer valor se guarda (considera) como mximo en cambio los dems valores se comparan con el mximo, tengamos en cuenta esta observacin porque la vamos a usar en la resolucin por computadora. Los dos primeros ejemplos de este apunte mostrarn la implementacin del mtodo que acabamos de exponer, el tercero permitir ver cmo se puede buscar un mximo partiendo de un valor absurdo. Ejemplo 1 En una planilla se tiene nombre y apellido (30 caracteres) y sueldo de los 35 empleados de una empresa. Determinar y mostrar por pantalla el nombre y apellido y sueldo del empleado que ms gana. Datos: (NOMBRE, SUELDO) k 1 <= k <= 35 Resultados: MAXEMP, MAXSUEL La estrategia para resolver este problema es:
35 veces Ingresar nombre y sueldo
Es el primer empleado?
Veamos algoritmo:
cmo
queda
el
Mximos y mnimos
NOMBRE , SUELDO K 1 35
K=1
333 5
MAXSUEL SUELDO MAXEMP NOMBRE
MAXEMP NOMBRE
En este ejemplo, la variable del ciclo FOR es usada para determinar si los datos ingresados corresponden al primer empleado o no; si K es igual a 1 significa que es la primera vez que se ingresa al ciclo. En la variable MAXSUEL se guarda el sueldo mximo pero como adems se desea saber a qu empleado corresponde es necesario guardar en otra variable el nombre del empleado, para ello usaremos MAXEMP.
Ejemplo 2 En una planilla se tiene nombre y apellido (30 caracteres) y sueldo de los empleados de una empresa. Hallar el empleado de mayor sueldo y mostrar por pantalla nombre, apellido y sueldo. El operador ser el responsable de indicar cuando no hay ms datos para ingresar. Estamos ante un ejemplo que slo difiere del anterior por la forma en que terminan los datos, o sea que habr que pensar en otro tipo de ciclo para hacer las repeticiones; tal como est planteado el problema el ciclo adecuado es el repeat-until porque la salida del ciclo depende de la respuesta del operador. El prximo aspecto a considerar es cmo reconocer los datos del primer empleado ya que ahora no hay que contarlos. Una solucin es utilizar lo que se conoce como seal o bandera. Se trata de una variable a la cual damos slo dos valores, por ejemplo 0 y 1 o TRUE y FALSE, que permiten representar dos situaciones posibles, es una tcnica muy usada cuando se necesita saber si un caso sucedi o no durante un proceso. En el ejemplo 2 la seal en cero significar que los datos ledos son los del primer empleado y la seal en 1 que los datos ledos no son los del primer empleado.
MAXSUEL , MAXEMP F
Mximos y mnimos
NOMBRE , SUELDO
BAND = 0
MAXSUEL SUELDO SUELDO > MAXSUEL MAXEMP NOMBRE MAXSUEL SUELDO BAND 1 MAXEMP NOMBRE
Otra forma de buscar el mximo consiste en fijar de antemano un valor mximo absurdo, tan pequeo que todos los valores del conjunto sean ms grandes que l. De este modo cuando se compare el primer valor ingresado con este mximo, lo va a superar y en consecuencia lo va a reemplazar y de all en ms se continuar de igual forma que en los ejemplos anteriores. El Ejemplo 3 servir para mostrar los pasos de este mtodo. Ejemplo 3 En una planilla se tiene nombre y apellido (30 caracteres) y sueldo de los empleados de una empresa. Hallar el empleado de mayor sueldo y mostrar por pantalla nombre, apellido y sueldo. El ingreso de un apellido ZZZZ marcar el fin de los datos.
Desea seguir ingresando nombres y sueldos ? ( SI / NO) RESPUESTA RESPUESTA = NO MAXSUEL , MAXEMP F
Mximos y mnimos
NOMBRE , SUELDO
Si en lugar de buscar un mximo lo que se pretende es buscar un mnimo (supongamos que lo llamamos MINSUEL) en los algoritmos vistos se debe cambiar la comparacin SUELDO > MAXSUEL por SUELDO < MINSUEL. Si se usa el ltimo mtodo entonces como valor mnimo absurdo hay que elegir un valor grande tal que todos los valores del conjunto sean menores que l.
MAXSUEL , MAXEMP F