Sunteți pe pagina 1din 4

Algoritmos y Estructura de Datos

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?

Guardar sueldo y nombre como mximo

Comparar el sueldo con el mximo y guardar el ms grande

Veamos algoritmo:

cmo

queda

el

1 C.C. Marta Ferrari

Algoritmos y Estructura de Datos


C

Mximos y mnimos

NOMBRE , SUELDO K 1 35

K=1

333 5
MAXSUEL SUELDO MAXEMP NOMBRE

MAXSUEL SUELDO>MAXSUE SUELDO L

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.

2 C.C. Marta Ferrari

MAXSUEL , MAXEMP F

Algoritmos y Estructura de Datos


BAND 0

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.

3 C.C. Marta Ferrari

Desea seguir ingresando nombres y sueldos ? ( SI / NO) RESPUESTA RESPUESTA = NO MAXSUEL , MAXEMP F

Algoritmos y Estructura de Datos

Mximos y mnimos

MAXSUEL 0 NOMBRE , SUELDO NOMBRE <> ZZZZ

SUELDO > MAXSUEL

MAXSUEL SUELDO MAXEMP NOMBRE

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.

4 C.C. Marta Ferrari

MAXSUEL , MAXEMP F

S-ar putea să vă placă și