Delphi - Programa con Matrices , vectores y registros DELPHI

 
Vista:
sin imagen de perfil

Programa con Matrices , vectores y registros DELPHI

Publicado por sebastian (1 intervención) el 12/12/2013 14:25:36
Estoy realizando un ejercicio practico para preparar un final. El enunciado es el siguiente:

Una compañía tiene 12 plantas. Se debe realizar un programa que permita leer el nombre de cada planta, y la producción que se hizo en cada uno de los 7 días de la semana. Utilizar un arreglo de una dimensión para leer los nombres de las plantas. Una matriz de 12x7 para la producción de las 12 plantas en los 7 días y luego obtener:
a)Planta + Productiva
b) Producción de la planta más productiva
c) Día con mayor producción

El ejercicio lo desarrollé pero tengo algun error y no logro descifrar que arreglar (más allá de que se que es lo que esta mal) ya intenté de mil formas y no puedo. Se realiza con librerias operaciones que tienen los principales métodos de insercioón, busqueda y demás. Les transcribo el código del PROJECT1 y de la UNIT1. Si me pueden dar una mano. Lo agradecería mucho!!

PROJECT1:

program Project1;

{$APPTYPE CONSOLE}
uses

SysUtils,
Unit1 in 'Unit1.pas', libreria_registros;

Type
tregistro_max=record
total:real;
nombre:string;
end;
Tvecmax= array[1..max]of tregistro_max;

var
i:tipoindice;
Planta:tregistro;
Manufactureria: tvector;
vec_max:tvecmax;
ult,ult_max:tipoposicion;


{----------------------------------------------------------------------------------------------------}
Procedure Insertar2(var v:tvecmax;var ultimo:tipoposicion; elem:tregistro_max);
Begin
If (ultimo<max)
Then
Begin
Ultimo:=ultimo+1;
V[ultimo]:=elem;
end
Else
Writeln('La estructura esta llena');
End;
{--------------------------------------------------------------------------------------------------}
Function PosMayor2(v:tvecmax;ult:tipoposicion):tipoposicion;
var
i,maximo:tipoposicion;
Begin
maximo:=min;
For i:=succ(min) to ult do
If (v[i].total>v[maximo].total)
Then
maximo:=i;
PosMayor2:=maximo;
End ;
{--------------------------------------------------------------------------------------------------}
Procedure Mayor (v:tvector; ultimo:tipoposicion; var vec_max:tvecmax; var ult_max:tipoposicion);
var
i,j,k:tipoindice;
suma:real;
elem:tregistro_max;
aux:tipoposicion;

begin
for i:=min to ultimo do
begin
suma:=0;
for j:=min to max_fil do
for k:=min to max_col do
begin
suma:=suma+v[i].[j,k]; me falta la carga del vector (? { me tira un error aca , con esto}
elem.total:=suma; {voy calculando los totales por planta y los cargo en un vector}
elem.nombre:=v[i].Nombre; {para ver cual es la que mas produce y cuanto}
insertar2(vec_max,ult_max,elem);
end;
end;
aux:=Posmayor2(vec_max,ult_max);
Writeln('La planta que mas produjo es ', vec_max[aux].nombre,' con un total de $',vec_max[aux].total:4:2);
end;
{--------------------------------------------------------------------------------------------------}
begin
crear_est_vacia(Manufactureria,ult);
cargar_registro(planta);
insertar(manufactureria,ult,planta);


mostrar_vector(manufactureria,ult);
writeln;
mayor(manufactureria,ult,vec_max,ult_max); { muestra la planta que mas produjo y cuanto. }
readln;
end.

-----------------------------------------------------------------------------------------------------------------------

UNIT1 :

unit Unit1;

interface

Const
max_fil=12;
max_col=7;
max=50;

Type
Tmatriz= array[1..max_fil,1..max_col]of real;

TRegistro= record
Nombre:string;
Produccion:TMatriz;
end;
Tvector= array[1..max]of tregistro;

Procedure cargar_registro(var R:Tregistro);
Procedure mostrar_registro(var R:Tregistro);
implementation
{-------------------------------------------------------------------------------}
Procedure cargar_registro(var R:Tregistro);
var
i,j:byte;

Begin
Write('Nombre: ');
readln(r.nombre);
Writeln ('Carga de la produccion por dia');

for i:=1 to max_fil do
begin
writeln('planta : ', r.Nombre);
for j:=1 to max_col do
begin
write(' dia ',j,': ');
readln(r.produccion[i,j]);

end;

end;
end;
{-------------------------------------------------------------------------------}

Procedure mostrar_registro(var R:Tregistro);
var
i,j:byte;
Begin
Write('Nombre de planta: ');writeln(r.nombre);
Writeln (' ----- Muestra de los totales diarios -----');

for i:=1 to max_fil do
for j:=1 to max_col do
begin
write(' dia ',j,': ');
writeln(r.produccion[i,j]:4:2);
end;

end;

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