Esto es lo que yo e hecho:
Código:
program cuadros;
const
tamcoleccion=3;
type
Tcuadro=record
NumCuadro:integer;
Titulo:string;
Autor:string;
Precio:real;
end;
Tcoleccion= array [1..tamcoleccion] of Tcuadro;
procedure lee_cuadro(Var cuadros:Tcuadro);
begin
writeln;
write(' Numero de cuadro: ');
readln(cuadros.NumCuadro);
write(' Titulo cuadro: ');
readln(cuadros.Titulo);
write(' Autor: ');
readln(cuadros.Autor);
write(' Precio: ');
readln(cuadros.Precio);
writeln;
end;
procedure imprime_cuadro(cuadros:Tcuadro);
begin
writeln;
writeln(cuadros.NumCuadro,': ',cuadros.Titulo);
writeln(' Autor: ',cuadros.Autor);
if cuadros.Precio=0 then
writeln(' Precio: No en venta')
else
writeln(' Precio: ',cuadros.Precio:0:2);
writeln('---');
end;
procedure lee_coleccion (VAR lectura:Tcoleccion;tamcoleccion:integer);
var
i:integer;
begin
for i:=1 to tamcoleccion do
lee_cuadro(lectura[i]);
end;
procedure imprime_coleccion (lectura:Tcoleccion;tamcolecion:integer);
var
i:integer;
begin
for i:=1 to tamcoleccion do
imprime_cuadro(lectura[i]);
end;
function suma_coleccion(lectura:Tcoleccion;tamcoleccion:integer;VAR no_en_venta:real):real;
var
i:integer;
begin
for i:=1 to tamcoleccion do
if no_en_venta=0 then
no_en_venta:=i;
for i:=1 to tamcoleccion do
suma_coleccion:=suma_coleccion+lectura[i].cuadros.precio;
end;
var
coleccion1:Tcoleccion;
suma:real;
no_en_venta:real;
begin
writeln('>Datos primera coleccion: ');
lee_coleccion(coleccion1,tamcoleccion);
writeln('>Datos de los cuadros: ');
imprime_coleccion(coleccion1,tamcoleccion);
suma:=suma_coleccion(coleccion1,tamcoleccion,no_en_venta);
writeln('La suma es: ',suma:0:2);
writeln('Y hay ',no_en_venta,' cuadro no en venta');
end.
Tengo que hacer esto:
Añadir al programa anterior una función de nombre suma_coleccion. Esta función devuelve como resultado de la función el valor total de la colección. Pero como es posible que algunos cuadros no estén a la venta, esta función además devolverá como parámetro por referencia el número de cuadros que no están en venta.
Y llamarlo de esta manera, y no puedo hacerlo de otra:
Código:
(* -- Cálculo de la suma --*)
suma := suma_coleccion(coleccion1, TAMCOLECCION, no_en_venta);
(* -- Presentación de resultados --*)
writeln('>Datos de los cuadros');
imprime_coleccion(coleccion1, TAMCOLECCION);
writeln('> La suma es: ', suma:0:2);
writeln('> Y hay ', no_en_venta, 'cuadro no en venta');
De lo que yo e codeado, se que todo funciona menos la función suma_coleccion que se me solicita codear y llamar de esa precisa manera...
Ideas?
Lo de
Código:
for i:=1 to tamcoleccion do
if no_en_venta=0 then
no_en_venta:=i;
Y por que no me deja llamar asi
Código:
lectura[i].cuadros.precio;
Salu2.