Pascal/Turbo Pascal - Ejercicio Pascal

 
Vista:

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ejercicio Pascal

Publicado por Diego Romero (996 intervenciones) el 19/05/2010 03:14:58
Esta línea:

MAT3D:=MT;

No tiene sentido en Pascal. Estás asignando un tipo de dato a una variable (que da la casualidad que es del mismo tipo). Simplemente no tiene sentido.

Lo que has querido hacer, a juzgar por los fors que tienes antes, es esto:

MAT3D[i,j,k]:=0;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar