Programacion con PAscal

Iniciado por inquilin@19, 24 Mayo 2013, 16:19 PM

0 Miembros y 1 Visitante están viendo este tema.

inquilin@19

Hola a todos, estoy realizando unos ejercicios de pascal y me he atascado en uno eh concreto.
Os pongo el enunciado para aclararos y el codigo que tengo yo, a ver si encuentro con vuestra ayuda el problema.

Enunciado:

"1.   PRIMERA CUESTIÓN:

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)

2.   SEGUNDA CUESTIÓN
Escriba un procedimiento (lee_producto) que rellene los campos de una variable del tipo Producto, pidiendo al usuario todos los datos salvo el valor de en_cesta que pondrá siempre a TRUE, esto indicará que el producto está en la cesta de la compra. Codifique otro procedimiento para mostrar por pantalla (escribe_producto) el valor de una variable del tipo Producto

3.   TERCERA CUESTIÓN:

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).

4.   CUARTA CUESTIÓN:
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.

5.   QUINTA CUESTIÓN:

Añada al programa de la actividad anterior, un procedimiento (mostrar_producto) que reciba un producto de la cesta de la compra como parámetro y lo muestre por pantalla.

6.   SEXTA CUESTIÓN:
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). UTILICE EL PROCEDIMIENTO DE LA CUESTIÓN ANTERIOR Y RECUERDE UTILIZAR LOS PROCEDIMIENTOS DE LAS ACTIVIDADES ANTERIORES ALLÍ DONDE PUEDA HACERLO.

7.   SÉPTIMA CUESTIÓN:

Añada todos los resultados de las cuestiones anteriores en un programa cuyo módulo principal:
1)   Declare e inicialice una cesta de la compra.
2)   Le pide al usuario que rellene la cesta completa (uno a uno cada producto de la cesta desde la posición 1 hasta TAMMAXCESTA).
3)   Muestre por pantalla todos los productos de la cesta.

Se recomienda utilizar un tamaño de cesta pequeño para facilitar la depuración del programa."

Y éste es el codigo que tengo yo

program cesta_compra;
const
tammaxcesta = 5;

type
tproducto = record
nombre : string;
unidades : integer;
precio_ud : real;
en_cesta : boolean;
end;

tablacesta = array[1..tammaxcesta] of tproducto;

var
iniciarcesta : tablacesta;
cesta : tproducto;
produ: tproducto;

procedure lee_producto (VAR produ:tproducto);
     begin
          write('Escribe el nombre del producto: ');
          readln(produ.nombre);

          write('Indica el numero de unidades: ');
          readln(produ.unidades);

          write('Indica el precio por unidad: ');
          readln(produ.precio_ud);
     end;

procedure escribe_producto (produ:tproducto);
     begin
          writeln('Producto: ',produ.nombre);
          writeln('Unidades: ',produ.unidades);
          writeln('Precio unidad: ',produ.precio_ud:0:2);
     end;

procedure inicializa_cesta(VAR iniciarcesta : tablacesta);
var
i:integer;
begin
for i := 1 to tammaxcesta do
writeln(iniciarcesta[i].en_cesta);
end;

procedure mostrar_producto(VAR prod:tablacesta);
    var
      i: integer;
    begin
         for i := 1 to tammaxcesta do
             write (prod[i].nombre);
         end;

procedure mostrar_cesta(cesta_compra:tablacesta);
    var
       i: integer;
    begin
         for i:=1 to tammaxcesta do
             write (cesta_compra[i].en_cesta);
         end;

begin

inicializa_cesta(iniciarcesta);
lee_producto(produ);
escribe_producto(produ);
writeln();
mostrar_producto(iniciarcesta);
mostrar_cesta(iniciarcesta);

end.


Si ejecuto este codigo me salen 5 FALSE seguidos, me muestra las sentencias de insertar producto pero no me da pie a mas.

Si alguien me pudiera ayudar estaria muy agradecida, llevo dias dandole vueltas y no consigo nada en claro.

Muchas gracias de antemano
PD: Tengo unos cuantos ejercicicios de Pascal resueltos, si alguien quiere alguno o necesita ayuda con algun ejercicio no dude en pedirmelo
Sólo mirando al frente se puede seguir, llevar lastres en el camino no te lo permiten