UTNianos

Versión completa: Consulta Ej 49 (guia nueva) 45 (guia vieja) Modulo I
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Que tal, tengo la siguiente duda sobre este ejercicio, no lo copio porque no sale la tabla asi que el que sea tan generoso de ayudar si puede directamente bajarse el word que subio nanuiit y leerlo de ahi seria mucho mas util.

Mi duda es que entiendo como encarar el ejercicio, por las dudas yo haria un for que iria de 1 a 3 (siendo cada numero un turno) y dentro de este un while y demas, pero que pasa me pide mostrar los resultados como lista, cosa que no vimos entonces el profesor nos dijo de mostrarlos uno por uno. Ahora el tema es que para mostrar el nombre de abonado por turno que tiene la factura mas costosa se me hace imposible porque si voy mostrandolos uno a uno la variable se inicializa nuevamente y no se guarda. Entonces me quedan dudas sobre lo que pide (por las dudas copio eso)

Informar por cada turno de trabajo:
• El nombre del abonado que debe abonar la factura más costosa y el monto de ésta.
• El nombre y el número de celular de la persona que realizó la mayor cantidad de minutos excedentes, indicando cuántos fueron.

Al final del día informar:
• El monto total facturado
• En que turno y en que orden dentro del turno apareció el abonado que utilizó la menor cantidad de minutos en el mes.
Utilice los subprogramas a) y b).


Gracias
if pagoMTu < pago then begin//
pagoMTu:=pago; // Maximo pago del turno
nomMTu:=nom; //
end;



pagoMTu la inicializas en 0 y ai va guardando el pago y el nombre (si es pago el pago maximo hasta el momento ) en otras variables este if lo tenes que poner dentro del while o for de cada turno.
para el:
Informar por cada turno de trabajo:
• El nombre del abonado que debe abonar la factura más costosa y el monto de ésta.

Lo que haria es crear tres variables. por ej, NombreMasCostosa, MontoMasCostosa, y MaxCostosa.

Lo primero que haria antes del For es inicializar por ej MaxCostosa en 0.
La estructura del programa seria como dijiste vos, un For de 1 a 3 (para los 3 turnos), adentro del for un while (que corte cuando el celular sea 0 ). Adentro del while, se piden los datos de cada persona, y se realizan el cáculo(con procedim y funciones...) de pesos a abonar(CostoDelAbono). Luego de calcularlo por ej, podría hacer una condición, por ej, IF CostoDelAbono > MaxCostosa si es verdadero, guardaria en MaxCostosa el CostoDelAbono y el nombre de la persona en NombreMasCostosa y obviamente en MontoMasCostosa el CostoDelAbono. Si es falso no hacer nada.
Ese ciclo se va a ir repitiendo hasta que finalice con un 0 en el celular, ahi abajo del ciclo While, (pero adentro del for) pondría, del Turno mañana el nombre del abonado que debe abonar la fact mas costosa es, NombreMasCostosa, y el monto MontoMasCostosa.

después que muestro, pondría nuevamente en 0 la variable MaxCostosa para que funcione en el nuevo turno...(tmb podria poner en cero montomascostosa y el nombre de la persona, esto serviría en el caso de que no haya ningun alta en el turno tarde)


y para:
• El nombre y el número de celular de la persona que realizó la mayor cantidad de minutos excedentes, indicando cuántos fueron.
seria igual al anterior pero utilizando otras variables...

y para:
• El monto total facturado
Sería un acumulador de montos adentro del while, y se muestra cuando finaliza el ciclo for, ya que pide que se muestre al finalizar el dia.

• En que turno y en que orden dentro del turno apareció el abonado que utilizó la menor cantidad de minutos en el mes.

Lo que haría sería seria una condición, adentro del while, y al final de calcular todo, que diga si el tiempo utilizado(ya pasado completamente a minutos con la función a)) es menor que una variable que voy a crear(MenorMinutos), y podria inicializar esta variable en 6040... (6040 es los maximos minutos que pueden ingresar en el caso de que sean 99 horas y 99 minutos = 99x60 + 99 = 6039. )
En el caso de que sea verdadero (que la primera ves lo va a ser obviamente) Guardar en MenorMinutos la cant de minutos de la persona, y en otra variable el turno, y en otra el orden dentro del turno, las sacaría de aca:

Para saber el turno, usaria la variable de control del ciclo for, en el caso de ser 1 = quiere decir T. Mañana, si es 2, T tarde y si es 3 T noche.
Para saber el orden dentro del turno habria que hacer un contador adentro del while, y afuera del while volverlo a poner en 0.



No hice el programa, la verdad no se si funcióna lo que dije, creo que tiene sentido, espero que lo puedas entender y poder mejorarlo si esta mal....
Para calcular los máximos/mínimos (en ves de poner 6040 que no me gusta) también creo que podriamos usar una variable booleana para saber si es la primera persona en ser ingresada, y directamente guardar sus datos como si fuera la única que utilizo la menor cant de minutos y ir comparando utilizando a esta.

saludos
URLs de referencia