EJERCICIO DE REGISTROS Y ARRAYS
Publicado por Sara (6 intervenciones) el 04/02/2015 20:27:29
Tengo que hacer este ejercicio pero me quede atascada en los dos puntos ultimos, pongo todo lo que pide desde el principio para saber de que va.
Declare un tipo de registro llamado Producto para representar un producto dentro de una cesta de compra.
El producto debe tener campos para representar: El nombre, el número de unidades solicitadas, el precio por unidad y un campo booleano para indicar si el producto continua en la cesta (si en_cesta=TRUE significa que el producto está en la cesta, si en_cesta=FALSE significa que se ha eliminado).
Defina un tipo llamado Cesta, como una tabla de elementos del tipo Producto, definido en la cuestión 1. La longitud máxima de elementos de la tabla estará definida en la constante TAMMAXCESTA, y los índices de la misma irán entre 0 y TAMMAXCESTA, de modo que el registro de índice 0 tendrá un uso especial (que veremos posteriormente).
Reserve la posición cero de la tabla para un uso especial y use a partir de ahora, sólo las posiciones desde 1 hasta TAMMAXCESTA.
Añada un procedimiento (inicializa_cesta) que reciba como parámetro una variable del tipo Cesta y la inicialice poniendo el campo en_cesta a FALSE en todas las posiciones de la misma. Esto indicará que todas las posiciones están libres.
Añada al programa de la actividad anterior un procedimiento (mostrar_cesta) que reciba una cesta de la compra como parámetro y muestre por pantalla todos los productos que están en la cesta (es decir aquellos en los que en_cesta=TRUE).
Añada al programa de la actividad anterior un procedimiento (cuenta_productos) que reciba como parámetro, entre otros posibles, una variable del tipo Cesta y cuente las posiciones ocupadas, es decir, las que tienen el campo en_cesta=TRUE devolviendo este valor en un parámetro. Así sabremos cuantos productos tiene la cesta
Añada un procedimiento (busca_libre) que reciba como parámetro, entre otros POSIBLES, una variable de tipo Cesta y busque la primera posición de la Cesta en la que el campo en_cesta=FALSE, devolviendo esta posición o 0 en el caso de que no encuentre ninguna posición libre (es decir ninguna posición con el campo en_cesta=FALSE).
Añada un procedimiento (incluir_producto_en_cesta) que introduzca un nuevo producto en la cesta de la compra, si hay alguna posición libre, o presente el mensaje de “Cesta llena” si no hay posición libre.
Este procedimiento debe hacer uso de los procedimientos busca_libre y lee_producto, que ya ha definido en cuestiones y actividades anteriores.
*************
HASTA AHORA HICE LO SIGUIENTE
Const
Tammaxcesta=3;
Type
Tproducto=record
nombre:string;
num_unidades:integer;
precio_unidad:real;
en_cesta:boolean;
end;
Tcesta = array [0..Tammaxcesta] of Tproducto;
Var
producto:Tproducto; (* Variable del tipo producto*)
micesta:Tcesta; (* variable del tipo cesta*)
contador:integer;
Procedure lee_producto (VAR producto:Tproducto);
Begin
write('Introduzca el nombre del producto: ');
readln(producto.nombre);
write('Introduzca el numero de unidades: ');
readln(producto.num_unidades);
write('Introduzca el precio por unidad: ');
readln(producto.precio_unidad);
End;
Procedure inicializa_cesta;
var
i:integer;
Begin
for i:= 1 to TAMMAXCESTA do
begin
micesta [i]. en_cesta := false;
micesta [i]. nombre := '';
micesta [i]. num_unidades:= 0;
micesta [i]. precio_unidad:= 0.0;
end;
end;
Procedure lee_cesta (VAR unacesta:Tcesta);
Var
i:integer;
Begin
producto.en_cesta:=true;
For i:= 1 to Tammaxcesta do
begin
lee_producto(unacesta[i]);
end;
End;
Procedure cuenta_productos (VAR contador:integer; micesta:Tcesta);
Var
i:integer;
Begin
For i:= 1 to Tammaxcesta do
begin
if producto.en_cesta = true then
contador:=CONTADOR + --------> aqui es donde no se lo que hay que hacer
Ya me contestaron a esto pero no hay que introducir nuevos productos, hay que hacerlo con los productos que tenemos.
Saludos y gracias
Declare un tipo de registro llamado Producto para representar un producto dentro de una cesta de compra.
El producto debe tener campos para representar: El nombre, el número de unidades solicitadas, el precio por unidad y un campo booleano para indicar si el producto continua en la cesta (si en_cesta=TRUE significa que el producto está en la cesta, si en_cesta=FALSE significa que se ha eliminado).
Defina un tipo llamado Cesta, como una tabla de elementos del tipo Producto, definido en la cuestión 1. La longitud máxima de elementos de la tabla estará definida en la constante TAMMAXCESTA, y los índices de la misma irán entre 0 y TAMMAXCESTA, de modo que el registro de índice 0 tendrá un uso especial (que veremos posteriormente).
Reserve la posición cero de la tabla para un uso especial y use a partir de ahora, sólo las posiciones desde 1 hasta TAMMAXCESTA.
Añada un procedimiento (inicializa_cesta) que reciba como parámetro una variable del tipo Cesta y la inicialice poniendo el campo en_cesta a FALSE en todas las posiciones de la misma. Esto indicará que todas las posiciones están libres.
Añada al programa de la actividad anterior un procedimiento (mostrar_cesta) que reciba una cesta de la compra como parámetro y muestre por pantalla todos los productos que están en la cesta (es decir aquellos en los que en_cesta=TRUE).
Añada al programa de la actividad anterior un procedimiento (cuenta_productos) que reciba como parámetro, entre otros posibles, una variable del tipo Cesta y cuente las posiciones ocupadas, es decir, las que tienen el campo en_cesta=TRUE devolviendo este valor en un parámetro. Así sabremos cuantos productos tiene la cesta
Añada un procedimiento (busca_libre) que reciba como parámetro, entre otros POSIBLES, una variable de tipo Cesta y busque la primera posición de la Cesta en la que el campo en_cesta=FALSE, devolviendo esta posición o 0 en el caso de que no encuentre ninguna posición libre (es decir ninguna posición con el campo en_cesta=FALSE).
Añada un procedimiento (incluir_producto_en_cesta) que introduzca un nuevo producto en la cesta de la compra, si hay alguna posición libre, o presente el mensaje de “Cesta llena” si no hay posición libre.
Este procedimiento debe hacer uso de los procedimientos busca_libre y lee_producto, que ya ha definido en cuestiones y actividades anteriores.
*************
HASTA AHORA HICE LO SIGUIENTE
Const
Tammaxcesta=3;
Type
Tproducto=record
nombre:string;
num_unidades:integer;
precio_unidad:real;
en_cesta:boolean;
end;
Tcesta = array [0..Tammaxcesta] of Tproducto;
Var
producto:Tproducto; (* Variable del tipo producto*)
micesta:Tcesta; (* variable del tipo cesta*)
contador:integer;
Procedure lee_producto (VAR producto:Tproducto);
Begin
write('Introduzca el nombre del producto: ');
readln(producto.nombre);
write('Introduzca el numero de unidades: ');
readln(producto.num_unidades);
write('Introduzca el precio por unidad: ');
readln(producto.precio_unidad);
End;
Procedure inicializa_cesta;
var
i:integer;
Begin
for i:= 1 to TAMMAXCESTA do
begin
micesta [i]. en_cesta := false;
micesta [i]. nombre := '';
micesta [i]. num_unidades:= 0;
micesta [i]. precio_unidad:= 0.0;
end;
end;
Procedure lee_cesta (VAR unacesta:Tcesta);
Var
i:integer;
Begin
producto.en_cesta:=true;
For i:= 1 to Tammaxcesta do
begin
lee_producto(unacesta[i]);
end;
End;
Procedure cuenta_productos (VAR contador:integer; micesta:Tcesta);
Var
i:integer;
Begin
For i:= 1 to Tammaxcesta do
begin
if producto.en_cesta = true then
contador:=CONTADOR + --------> aqui es donde no se lo que hay que hacer
Ya me contestaron a esto pero no hay que introducir nuevos productos, hay que hacerlo con los productos que tenemos.
Saludos y gracias
Valora esta pregunta


0