Resolución Parcial 1ra.
fecha Comisión 2
Algoritmos y Programación 1
Ciencia de Datos en Organizaciones
2024
Una empresa de ventas de pasajes en colectivo está analizando la información de los viajes
realizados a Bahía Blanca en el último año. Para ello, se dispone de una lista con la
información de los viajes realizados. De cada viaje se conoce el código de viaje, el número de
colectivo(entre 1 y 80), el mes en que se realizó el viaje, cantidad de pasajes vendidos y el DNI
del chófer.
Además, la empresa dispone de un vector con información sobre la capacidad máxima de cada
colectivo.
Realizar un programa que procese la información de los viajes e:
a) Informe el número de colectivo con el cual se realizaron más viajes.
b) Informe el promedio de pasajeros entre todos los viajes.
c) Genere una lista con los viajes realizados en el mes 5, donde la cantidad de pasajes
vendidos no alcanza la capacidad máxima del colectivo.
Una empresa de ventas de pasajes en colectivo está analizando la información de los viajes realizados a Bahía Blanca en el último año. Para ello,
se dispone de una lista con la información de los viajes realizados. De cada viaje se conoce el código de viaje, el número de colectivo(entre 1 y
80), el mes en que se realizó el viaje, cantidad de pasajes vendidos y el DNI del chófer.
Además, la empresa dispone de un vector con información sobre la capacidad máxima de cada colectivo.
Program Comision2; Definición de Tipos
uses GenericLinkedList;
Type
• Registro viaje.
viaje = record
• Vector con capacidad
codigo: integer;
máxima de cada colectivo.
colectivo: integer;
• Lista de viajes
mes: integer;
pasajes:integer;
dnichofer:integer;
end;
vector = array[1..80] of integer;
Listaviajes = specialize LinkedList<viaje>;
a. ¿Cómo calculo el número de
colectivo con el cual se realizaron
más viajes?
Realizar un programa que procese la información de los viajes e:
• Informe el número de colectivo con el cual se realizaron
más viajes.
• Informe el promedio de pasajeros entre todos los viajes. Guardo en vector contador la
cantidad de viajes de cada
• Genere una lista con los viajes realizados en el mes 5, colectivo.
donde la cantidad de pasajes vendidos no alcanza la Obtengo la posición (número de
capacidad máxima del colectivo. colectivo) en el vector buscando
un MÁXIMO.
b. ¿ Cómo calculo el promedio de
pasajeros entre todos los viajes?
Realizar un programa que procese la información de los viajes e:
• Informe el número de colectivo con el cual se realizaron
más viajes.
Acumulo la cantidad de pasajeros entre
• Informe el promedio de pasajeros entre todos los viajes. todos los viajes de la lista.
• Genere una lista con los viajes realizados en el mes 5,
Cuento los viajes de la lista.
donde la cantidad de pasajes vendidos no alcanza la
Al finalizar el recorrido puedo informar
capacidad máxima del colectivo. un promedio: cantpasajes/cantviajes.
c. ¿Qué estructura necesito?
¿Qué operación de agregado tengo que utilizar?
¿ Cuáles son las condiciones?
Lista de Viajes.
Realizar un programa que procese la información de los viajes e:
Del mismo tipo de la lista original
• Informe el número de colectivo con el cual se
Listaviajes = specialize LinkedList<viaje>;
realizaron más viajes. No tengo que crear un nuevo tipo que sea igual
• Informe el promedio de pasajeros entre todos los
viajes. No lo indica explícitamente.
add/ addfirst
• Genere una lista con los viajes realizados en el mes
5, donde la cantidad de pasajes vendidos no alcanza
mesviaje = 5 y
la capacidad máxima del colectivo. pasajesvendidos < capacidadmaximadelcolectivo
Una empresa de ventas de pasajes en colectivo está analizando la
¿Qué modularizo?
información de los viajes realizados a Bahía Blanca en el último año. Para
ello, se dispone de una lista con la información de los viajes realizados. De
cada viaje se conoce el código de viaje, el número de colectivo(entre 1 y 80), cargarListaviajes //se dispone
el mes en que se realizó el viaje, cantidad de pasajes vendidos y el DNI del
cargarcapacidades // se dispone
chófer.
Además, la empresa dispone de un vector con información sobre la
Inicializar el vector contador
capacidad máxima de cada colectivo. viajes por colectivo
Realizar un programa que procese la información de los viajes e:
• Informe el número de colectivo con el cual se realizaron Recorrer la lista
más viajes. MÁXIMO
• Informe el promedio de pasajeros entre todos los viajes.
• Genere una lista con los viajes realizados en el mes 5,
donde la cantidad de pasajes vendidos no alcanza la
capacidad máxima del colectivo.
Programa principal
var
prom:real;
vcapacidades,vtotales: vector;
lv,lmes5: Listaviajes;
begin
cargarListaviajes(lv); // se dispone
cargarcapacidades(vcapacidades); //se dispone
inicializarTotales(vtotales); // punto a. inicializo el vector contador
recorrerLista(lv,vcapacidades,lmes5,vtotales,prom); // Recorro la lista una sola vez para hacer los puntos a, b y c
{Puedo informar en el programa principal o puedo informar en los procedimientos}
// punto a
writeln('El colectivo con más viajes es ', ColectivoMasViajes(vtotales));
//punto b
writeln ('El promedio de pasajeros entre todos los viajes es ', prom);
end.
Módulos function ColectivoMasViajes(v: vector): integer;
var i,posmax: integer;
max: integer;
begin
procedure inicializarTotales(var vc: vector); max:= -1; // inicializo variable en un valor muy chico;
var for i:= 1 to 80 do begin
i:integer; if (v[i] > max) then begin
begin max:=v[i];
posmax:= i;
for i:= 1 to 80 do
end;
vc[i] := 0;
end;
end;
ColectivoMasViajes:= posmax;
end;
procedure recorrerLista (lv: Listaviajes ; vcoches: vector; var listaM5: Listaviajes; var vtotal: vector; var promedio: real);
var cantpasajes,cantviajes:integer;
begin
listaM5 := Listaviajes.create();
cantviajes:=0;
cantpasajes:=0;
lv.reset();
While (not lv.eol()) do begin // Recorro la lista de viajes que se dispone UNA SOLA VEZ.
vtotal[lv.Current().colectivo]:= vtotal[lv.Current().colectivo] + 1; // b. acumulo según colectivo
cantviajes:= cantviajes + 1; // a. acumulo para promedio
cantpasajes:= cantpasajes + lv.Current().pasajes; // a. acumulo para promedio
if (lv.Current().mes=5) and (lv.Current().pasajes < vcoches[lv.Current().colectivo]) then
listaM5.add(lv.Current()); // c. agrega a la lista nueva
lv.next(); // siguiente en la lista de viajes
end;
promedio:=cantpasajes/cantviajes;
end;