You are on page 1of 4

Algoritmos y Estructura de Datos mnimos

Mximos y

Mximos y mnimos Uno de los problemas ms comunes en programacin es 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 valor 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 (se 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 21 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: (NOM, SUELDO) k 1 <= k <= 35 Resultados: MAXEMP, MAXSUEL ESTRATEGIA
C 35 VECES INGRESAR NOMBRE Y SUELDO

ES EL 1 EMPLEADO ? GUARDAR NOMBRE Y SUELDO COMO MAXIMO COMPARAR EL SUELDO CON EL MAXIMO Y GUARDAR EL MAS GRANDE

MOSTRAR SUELDO MAXIMO y NOMBRE F

1 C.C. Marta Ferrari

Algoritmos y Estructura de Datos mnimos

Mximos y

Veamos cmo queda el algoritmo:


C

NOMBRE , SUELDO

K 1 35 MAXSUEL SUELDO

K=1

333 5

SUELDO>MAXSUE L MAXSUEL SUELDO MAXEMP NOMBRE

MAXEMP NOMBRE

MAXSUEL , MAXEMP

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

2 C.C. Marta Ferrari

Algoritmos y Estructura de Datos mnimos

Mximos y

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

BAND 0

NOMBRE , SUELDO

BAND = 0 MAXSUEL SUELDO SUELDO > MAXSUEL MAXEMP NOMBRE MAXSUEL SUELDO BAND 1 MAXEMP NOMBRE

Desea seguir ingresando nombres y sueldos ? ( SI / NO)

RESPUESTA RESPUESTA = NO

MAXSUEL , MAXEMP F

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 23 servir para mostrar los pasos de este mtodo. Ejemplo 23 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

Algoritmos y Estructura de Datos mnimos

Mximos y

MAXSUEL 0

NOMBRE , SUELDO NOMBRE <> ZZZZ

SUELDO > MAXSUEL MAXSUEL SUELDO MAXEMP NOMBRE

NOMBRE , SUELDO

MAXSUEL , MAXEMP F

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

You might also like