Autor |
Mensaje |
Fabricio
Nivel 8

Edad: 35
Registrado: 20 Nov 2008
Mensajes: 851
Ubicación: Villa del Parque, barrio turro
Carrera: Civil

|
|
Bueno, uno de los puntos del coloquio era, dados 2 archivos (arstock y ardiario), generar un 3ero llamado Stockfin, ordenado por codigo de producto, y 2 archivos de texto (pedidos y errores (mismo orden)), en errores figuran los productos que figuran en ardiario pero no figuran en arstock, y en pedidos aparecen los productos que quedaron con stock por debajo del stock minimo.
Pueden faltar codigos de producto en los 2 archivos y ambos estan ordenados (descendentemente o asdencente, no recuerdo) por codigo de producto y a su vez Ardiario esta ordenado por codigo de sucursal.
La cuestion es que no me aprobaron el coloquio, y entre uno de los errores estaba que, segun me dijo el profesor, nunca supuse que un producto puede estar en varias sucursales, pero no puedo encontrar en mi procedimiento donde deje pasar eso, dejo el procedimiento tipeado: (puse solo las estructuras que se usan y el procedimiento, todo el resto era redundante)
Código:
|
type
Tregstock=record Tregdiario=record
codigo:1..9999; codigo:1..9999;
precio:real; cantvend:real;
stactual:real; codsuc:1000..10000;
stminimo:real; end;
end;
tarstock=file of tregstock;
tardiario=file of tregdiario;
tarpedidos= file of text;
var
arstock,stockfin:tarstock;
ardiario:tardiario;
pedidos,errores:tarpedidos;
procedure apareo (var arstock,stockfin:tarstock; var ardiario:tardiario; var pedidos,errores:tarpedidos);
var
regstock,regfin:tregstock;
regdiario:tregdiario;
fins,find:boolean;
texto:string[50];
begin
reset(arstock);
reset(ardiario);
rewrite(stockfin);
rewrite(pedidos);
rewrite(errores);
leers(arstock,regstock,fins);
leerd(ardiario,regdiario,find);
while(not fins)and(not find)do
begin
if(regstock.codigo>regdiario.codigo)then
while(regdiario.codigo<>regstock.codigo)do
leerd(ardiario,regdiario,find)
else
if(regstock.codigo<regdiario.codigo)then
while(regstock.codigo<>regidario.codigo)do
begin
texto:='error: el codigo '+regdiario.codigo+'no figura en el estock';
writeln(errores,texto);
leers(arstock,regstock,fins);
end
else
if(regstock.codigo=regdiario.codigo)then
begin
regstock.stactual:=regstock.stactual-regdiario.cantvend;
if(regstock.stactual<regstock.stminimo)then
begin
texto:='codigo: '+regstock.codigo+' stock menor al minimo';
writeln(pedidos,texto);
end;
write(stockfin,regstock);
leers(arstock,regstock, fins);
leerd(ardiario,regdiario,find);
end;
end;
whle(not fins) do
begin
write(stockfin,regstock);
leers(arstock,regstock,fins);
end;
while(not find)do
begin
texto:='error:el codigo '+regdiario.codigo+'no figura en el stock';
writeln(errores,texto);
leerd(ardiario,regdiario,find);
end;
close(ardiario);
close(arstock);
close(stockfin);
close(pedidos);
close(errores);
end;
|
|
|
|
|
_________________
|
|
 |
    |
 |
lamorsa
Nivel 8
Edad: 35
Registrado: 14 Nov 2009
Mensajes: 671
Ubicación: Monte Grande (Far South)
Carrera: Informática y Sistemas

|
|
No mencionaste que campos almacena en cada registro de los archivos arstock y ardiario.
En el caso que en dichos archivos contenga un campo que tenga un codigo de sucursal o nombre de sucursal. tienen razon en decirte que tendrias que verificar el stock un mismo codigo de producto en todas las sucursales existentes.
|
|
|
|
_________________
|
|
 |
    |
 |
Fabricio
Nivel 8

Edad: 35
Registrado: 20 Nov 2008
Mensajes: 851
Ubicación: Villa del Parque, barrio turro
Carrera: Civil

|
|
Claro, en realidad tendria que haber agregado dentro del if cuando son iguales, que si siguen siendo iguales los codigos de ambos archivos, vaya acumulando la cantidad vendida y lea otro registro de ardiario y al final la reste del total (o ir restando y leyendo en un ciclo) y luego eso grabarlo en el registro del codigo correspondiente, algo asi
Código:
|
if(regstock.codigo=regdiario.codigo)then
begin
while(regstock.codigo=regdiario.codigo)do
begin
regstock.stactual:=regstock.stactual-regdiario.cantvend;
leerd(ardiario,regdiario,find);
end;
if(regstock.stactual<regstock.stminimo)then
begin
texto:='codigo: '+regstock.codigo+' stock menor al minimo';
writeln(pedidos,texto);
end;
write(stockfin,regstock);
leers(arstock,regstock, fins);
end;
|
gracias por la ayuda!!!!
|
|
|
|
_________________
|
|
 |
    |
 |
|
|
Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro No podés responder a temas en este foro No podés editar tus mensajes en este foro No podés borrar tus mensajes en este foro No podés votar en encuestas en este foro No Podéspostear archivos en este foro No Podés bajar archivos de este foro
|
Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker365 Attacks blocked.
|