UTNianos

Versión completa: "Parcialito" de algoritmos
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas! Aca paso un "parcialito" que nos enchufaron la ultima clase, si algun alma caritativa ya lo hizo/tiene ganas de hacerlo y compartirlo buenisimo!

Saludos y gracias!
Ya vieron registros? (records/structs)
Emm, si, supuestamente ya vimos todo para el primer parcial!

Enviado desde mi GT-I9100 usando Tapatalk 2

A ver, se me ocurre así:

productos: vector de 9999 entradas (Una por producto. Son 9999 porque el código de producto es de 4 dígitos) Cada entrada es un registro que tiene descripcion, precio, stock, vendidos y un flag valido que indica si completé la entrada. Lo uso para ir contando las cosas de la semana.

productosDia: vector de 9999 entradas(una por producto). Cada entrada contiene cantidad(cantidad vendida) y rechazados. Lo uso para ir contando las ventas del día.



//Inserto datos en el vector productos hasta que codProd sea 0
read(codProd)
while codProd<> 0 do begin

read(productos[codProd].descripcion, productos[codProd].precio, productos[codProd].stock);
productos[codProd].valido := true;
productos[codProd].vendidos := 0;
read(codProd)

end;

//////////////////
//Inicio semana
/////////////////
punto7:=false; //Al menos un dia de la semana con una venta>50 unidades
punto8:=0; //Cantidad de dias con al menos un pedido rechazado por menos de 20 unidades de productos que cuestan más de 15


//Por cada dia:
for dia:=1 to 7 do begin
////////////////
///Inicio dia
///////////////
productosDia[codProd].vendidos := 0;
productosDia[codProd].rechazados := 0;

//Por cada producto:
read(codProd)
while codProd<> 0 do begin

read(cantidad);
if cantidad>productos[codProd].stock then begin //Si no hay stock suficiente
write('Stock insuficiente');
if cantidad<20 and productos[codProd].precio>15 then punto8:=punto8+1;
productosDia[codProd].rechazados := productosDia[codProd].rechazados + cantidad;
end else begin //En otro caso
if cantidad>50 then punto7:=true;
productosDia[codProd].vendidos := productosDia[codProd].vendidos + cantidad;
productos[codProd].stock := productos[codProd].stock - cantidad;
productos[codProd].vendidos := productos[codProd].vendidos + cantidad;
write(codProd, cantidad, cantidad*productos[codProd].precio); //(1)
end;

read(codProd)
end;
/////////////////
//Al final del dia
//////////////////
maxCantidad:=0;
maxProd := 0;
//Por cada producto
for i:=0 to 9999 do begin

if producto[codProd].valido then begin //Si lo ingresaron
write(productosDia[codProd].vendidos, productosDia[codProd].rechazados); //(2),(3)
write(productos[codProd].stock); //stock restante (4)

if productosDia[codProd].vendidos> maxCantidad then begin
maxCantidad := productosDia[codProd].vendidos;
maxProd := codProd;
end;
end;
end;
write(productosDia[maxProd].descripcion); //Imprimo el maximo. (5)


end;

/////////////////////////
//Al final de la semana
/////////////////////////

//Por cada producto
for i:=0 to 9999 do begin

if producto[codProd].valido then begin //Si lo ingresaron
write(producto[codProd].vendidos);
end;

end;
write(punto7, punto8);


(06-06-2013 21:55)Anirus escribió: [ -> ]A ver, se me ocurre así:

productos: vector de 9999 entradas (Una por producto. Son 9999 porque el código de producto es de 4 dígitos) Cada entrada es un registro que tiene descripcion, precio, stock, vendidos y un flag valido que indica si completé la entrada. Lo uso para ir contando las cosas de la semana.

productosDia: vector de 9999 entradas(una por producto). Cada entrada contiene cantidad(cantidad vendida) y rechazados. Lo uso para ir contando las ventas del día.



//Inserto datos en el vector productos hasta que codProd sea 0
read(codProd)
while codProd<> 0 do begin

read(productos[codProd].descripcion, productos[codProd].precio, productos[codProd].stock);
productos[codProd].valido := true;
productos[codProd].vendidos := 0;
read(codProd)

end;

//////////////////
//Inicio semana
/////////////////
punto7:=false; //Al menos un dia de la semana con una venta>50 unidades
punto8:=0; //Cantidad de dias con al menos un pedido rechazado por menos de 20 unidades de productos que cuestan más de 15


//Por cada dia:
for dia:=1 to 7 do begin
////////////////
///Inicio dia
///////////////
productosDia[codProd].vendidos := 0;
productosDia[codProd].rechazados := 0;

//Por cada producto:
read(codProd)
while codProd<> 0 do begin

read(cantidad);
if cantidad>productos[codProd].stock then begin //Si no hay stock suficiente
write('Stock insuficiente');
if cantidad<20 and productos[codProd].precio>15 then punto8:=punto8+1;
productosDia[codProd].rechazados := productosDia[codProd].rechazados + cantidad;
end else begin //En otro caso
if cantidad>50 then punto7:=true;
productosDia[codProd].vendidos := productosDia[codProd].vendidos + cantidad;
productos[codProd].stock := productos[codProd].stock - cantidad;
productos[codProd].vendidos := productos[codProd].vendidos + cantidad;
write(codProd, cantidad, cantidad*productos[codProd].precio); //(1)
end;

read(codProd)
end;
/////////////////
//Al final del dia
//////////////////
maxCantidad:=0;
maxProd := 0;
//Por cada producto
for i:=0 to 9999 do begin

if producto[codProd].valido then begin //Si lo ingresaron
write(productosDia[codProd].vendidos, productosDia[codProd].rechazados); //(2),(3)
write(productos[codProd].stock); //stock restante (4)

if productosDia[codProd].vendidos> maxCantidad then begin
maxCantidad := productosDia[codProd].vendidos;
maxProd := codProd;
end;
end;
end;
write(productosDia[maxProd].descripcion); //Imprimo el maximo. (5)


end;

/////////////////////////
//Al final de la semana
/////////////////////////

//Por cada producto
for i:=0 to 9999 do begin

if producto[codProd].valido then begin //Si lo ingresaron
write(producto[codProd].vendidos);
end;

end;
write(punto7, punto8);



Buenisimo! Gracias Anirus!!

Saludos!
Y acá está en diagrama, que creo que en realidad es lo que les pedían (y no código)
https://docs.google.com/file/d/0B1YW6naj...sp=sharing

La única aclaración es que los procedimientos están hechos con cuadrados simples porque por algún motivo no estaban los sandwichs que se suelen emplear para tal. Cuando se carga PRODUCTOS al vector, se carga ordenado mediante el método de burbuja, todo adentro del procedimiento. Está "resumido" (no es completo), completo sería un bardo, pero se entiende lo que se busca del enunciado.

Saludos!

Off-topic:

Siempre piden diagrama, pero para contestar en el foro es más rápido usar código =P
(11-06-2013 20:21)rob. escribió: [ -> ]Y acá está en diagrama, que creo que en realidad es lo que les pedían (y no código)
https://docs.google.com/file/d/0B1YW6naj...sp=sharing

La única aclaración es que los procedimientos están hechos con cuadrados simples porque por algún motivo no estaban los sandwichs que se suelen emplear para tal. Cuando se carga PRODUCTOS al vector, se carga ordenado mediante el método de burbuja, todo adentro del procedimiento. Está "resumido" (no es completo), completo sería un bardo, pero se entiende lo que se busca del enunciado.

Saludos!

ecolee, igual sirvio el cod. tambien para entender un poco algunas cosas!

Gracias Rob.!
(12-06-2013 17:06)fede.fna escribió: [ -> ]
(11-06-2013 20:21)rob. escribió: [ -> ]Y acá está en diagrama, que creo que en realidad es lo que les pedían (y no código)
https://docs.google.com/file/d/0B1YW6naj...sp=sharing

La única aclaración es que los procedimientos están hechos con cuadrados simples porque por algún motivo no estaban los sandwichs que se suelen emplear para tal. Cuando se carga PRODUCTOS al vector, se carga ordenado mediante el método de burbuja, todo adentro del procedimiento. Está "resumido" (no es completo), completo sería un bardo, pero se entiende lo que se busca del enunciado.

Saludos!

ecolee, igual sirvio el cod. tambien para entender un poco algunas cosas!

Gracias Rob.!


Off-topic:
De nada!
Igual iba básicamente por una cuestión de gustos (está el que prefiere el código y está el que quiere el diagrama, dependiendo él o lo que pide el profesor con quien cursan), para que al menos no hayan excusas para no entenderlo. Es un ejercicio medio engorroso para lo que pide realmente la materia, lo ideal sería simplificarlo un poco para que no hayan tantos cucos.

Saludos!
URLs de referencia