Ejercicio Pascal
Publicado por Juan (1 intervención) el 18/05/2010 22:56:58
Me podrian ayudar con un problema ? Algo mal tengo con el léxico ya que no me compila. No se preocupen si no tiene los archivos de textos, FIL1 y FIL2. Lo imporatnte es que la lógica este bien planteada.
El problema en cuestión trata de imprimir NyA(nombre y apellido y vendedores que más vendieron, cuales sucursales vendieron menos del art. 3 y que art. no se vendio en la sucursal 5. Lo planteé para 5 vend, 5 sucur y 5 artículos.
Program ventas1;
uses
crt,dos,printer;
type
MT=array[1..5,1..5,1..5] of integer;
datos = record
NyA:string[40];
ND:integer
end;
MD=array[1..5,1..5] of datos;
Var
MAT3D:MT;
MAT2D:MD;
procedure carga(var MAT3D:MT;var MAT2D:MD);
type
F=text;
var
z,i,j,k:integer;
Fil1,Fil2:F;
Begin
for i:=1 to 5 do
for j:=1 to 5 do
for k:=1 to 5 do
MAT3D:=MT; {ERROR ACA, no me permite poner MAT3D:0. Esto seria para resetear la matriz}
Assign(Fil1,'C:\FPC\Fil1.txt');
Assign(Fil2,'C:\FPC\Fil2.txt');
reset(Fil1);
reset(Fil2);
For k:=1 to 25 do
readln(Fil1,i,j,MAT2D[i,j].NyA,MAT2D[i,j].ND);
readln(Fil2,i,j,k,z);
while NOT EOF do
begin
MAT3D[i,j,k]:=MAT3D[i,j,k]+z;
readln(Fil2,i,j,k,z)
end;
function MASVEND(MAT3D:MT):integer; {ERROR: ILLEGAL EXPRESSION}
type
M=array[1..5,1..5] of integer;
Var
i,j,k:integer;
MAX :integer;
MACUM:M;
Begin
for i:=1 to 5 do
for j:= 1 to 5 do
MACUM[i,j]:=0;
for i:=1 to 5 do
for j:=1 to 5 do
for k:=1 to 5 do
MACUM[i,j]:=MACUM[i,j]+MAT3D[i,j,k];
MAX:=MACUM[1,1];
for i:=1 to 5 do
for j:=1 to 5 do
if MACUM[i,j] > MAX then
MAX:= MACUM[i,j];
MASVEND:=MAX
end;
Procedure VENDQMASVEND(MAT3D:MT;MAT2D:MD);
Var
i,j,k,MAX:integer;
Begin
MAX:=MASVEND[MAT3D];
for i:=1 to 5 do
for j:=1 to 5 do
begin
MACUM[i,j]:=0;
for k:=1 to 30 do
MACUM[i,j]:=MACUM[i,j] + MAT3D[i,j,k];
if MACUM[i,j] = MAX then
writeln(MAT2D[i,j].NyA)
end;
end;
Procedure MENOSVENDART3(MAT3D:MT);
type
VECSUC=array[1..5];
Var
i,j,MIN:integer;
vec:VECSUC;
begin
for i:= 1 to 5 do
begin
VECSUC[i]:=0
for i:= 1 to 5 do
VECSUC[i]:= VECSUC[i] + MAT3D[i,j,3];
MIN:=VECSUC[1];
for i:= 1 to 5 do
if VECSUC[i] < MIN then
MIN:= VECSUC[i];
fori:= 1 to 5 do
if VECSUC[i] = MIN then
writeln(i);
end;
end;
procedure ARTNOVEND(MAT3D:MT);
type
vecart=array[1..5];
var
i,j,k:integer;
vec1:vecart;
begin
for i:=1 to 5 do
begin
vecart[i]:=0;
for k:= 1 to 5 do
vecart[i]:= vecart[i] + MAT3D[i,5,k];
if vecart[i] = o then
writeln(i);
end;
end;
Begin {Programa principal}
clrscr;
carga(MAT3D,MAT2D);
VENDQMASVEND(MAT3D,MAT2D);
MENOSVENDART3(MAT3D);
ARTNOVEND(MAT3D);
readkey
End.
El problema en cuestión trata de imprimir NyA(nombre y apellido y vendedores que más vendieron, cuales sucursales vendieron menos del art. 3 y que art. no se vendio en la sucursal 5. Lo planteé para 5 vend, 5 sucur y 5 artículos.
Program ventas1;
uses
crt,dos,printer;
type
MT=array[1..5,1..5,1..5] of integer;
datos = record
NyA:string[40];
ND:integer
end;
MD=array[1..5,1..5] of datos;
Var
MAT3D:MT;
MAT2D:MD;
procedure carga(var MAT3D:MT;var MAT2D:MD);
type
F=text;
var
z,i,j,k:integer;
Fil1,Fil2:F;
Begin
for i:=1 to 5 do
for j:=1 to 5 do
for k:=1 to 5 do
MAT3D:=MT; {ERROR ACA, no me permite poner MAT3D:0. Esto seria para resetear la matriz}
Assign(Fil1,'C:\FPC\Fil1.txt');
Assign(Fil2,'C:\FPC\Fil2.txt');
reset(Fil1);
reset(Fil2);
For k:=1 to 25 do
readln(Fil1,i,j,MAT2D[i,j].NyA,MAT2D[i,j].ND);
readln(Fil2,i,j,k,z);
while NOT EOF do
begin
MAT3D[i,j,k]:=MAT3D[i,j,k]+z;
readln(Fil2,i,j,k,z)
end;
function MASVEND(MAT3D:MT):integer; {ERROR: ILLEGAL EXPRESSION}
type
M=array[1..5,1..5] of integer;
Var
i,j,k:integer;
MAX :integer;
MACUM:M;
Begin
for i:=1 to 5 do
for j:= 1 to 5 do
MACUM[i,j]:=0;
for i:=1 to 5 do
for j:=1 to 5 do
for k:=1 to 5 do
MACUM[i,j]:=MACUM[i,j]+MAT3D[i,j,k];
MAX:=MACUM[1,1];
for i:=1 to 5 do
for j:=1 to 5 do
if MACUM[i,j] > MAX then
MAX:= MACUM[i,j];
MASVEND:=MAX
end;
Procedure VENDQMASVEND(MAT3D:MT;MAT2D:MD);
Var
i,j,k,MAX:integer;
Begin
MAX:=MASVEND[MAT3D];
for i:=1 to 5 do
for j:=1 to 5 do
begin
MACUM[i,j]:=0;
for k:=1 to 30 do
MACUM[i,j]:=MACUM[i,j] + MAT3D[i,j,k];
if MACUM[i,j] = MAX then
writeln(MAT2D[i,j].NyA)
end;
end;
Procedure MENOSVENDART3(MAT3D:MT);
type
VECSUC=array[1..5];
Var
i,j,MIN:integer;
vec:VECSUC;
begin
for i:= 1 to 5 do
begin
VECSUC[i]:=0
for i:= 1 to 5 do
VECSUC[i]:= VECSUC[i] + MAT3D[i,j,3];
MIN:=VECSUC[1];
for i:= 1 to 5 do
if VECSUC[i] < MIN then
MIN:= VECSUC[i];
fori:= 1 to 5 do
if VECSUC[i] = MIN then
writeln(i);
end;
end;
procedure ARTNOVEND(MAT3D:MT);
type
vecart=array[1..5];
var
i,j,k:integer;
vec1:vecart;
begin
for i:=1 to 5 do
begin
vecart[i]:=0;
for k:= 1 to 5 do
vecart[i]:= vecart[i] + MAT3D[i,5,k];
if vecart[i] = o then
writeln(i);
end;
end;
Begin {Programa principal}
clrscr;
carga(MAT3D,MAT2D);
VENDQMASVEND(MAT3D,MAT2D);
MENOSVENDART3(MAT3D);
ARTNOVEND(MAT3D);
readkey
End.
Valora esta pregunta
0