Pascal/Turbo Pascal - Ejercicio en pascal AYUDA

 
Vista:
sin imagen de perfil

Ejercicio en pascal AYUDA

Publicado por Manu (3 intervenciones) el 01/04/2018 21:36:10
Estoy muy pillado en el siguiente problema, no hago más que darle vueltas...

A partir del programa de la actividad 1 vamos crear uno más complejo. Cada cuestión irá incrementando la funcionalidad de la versión anterior. El programa final deberá enviarlo por correo electrónico en un fichero llamado Unidad8_2.pas, junto con las respuestas a las cuestiones. UTILICE LOS NOMBRES DE TIPOS, FUNCIONES, PROCEDIMIENTOS, CONSTANTES, ETC… QUE SE INDICAN EN EL ENUNCIADO.

1. PRIMERA CUESTIÓN:

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.

Si lo desea, puede usar la sección de Respuesta 1 para realizar sus comentarios.




2. SEGUNDA CUESTIÓN:

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

Si lo desea puede usar la sección de Respuesta 2 para realizar sus comentarios.



3. TERCERA CUESTIÓN:

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.

Si lo desea puede usar la sección de Respuesta para realizar sus comentarios.



4. CUARTA CUESTIÓN:

Añada al programa anterior un procedimiento (buscar_producto) que reciba como parámetros, entre otros POSIBLES, el nombre de un producto y devuelva la posición en la cesta del producto o cero si no se encuentra.

Si lo desea, puede usar la sección de Respuesta para realizar sus comentarios.




5. QUINTA CUESTIÓN:

Añada al programa anterior un procedimiento (eliminar_producto_de_cesta) que pregunta el usuario el nombre del producto a eliminar, busca el producto en la cesta (usando el procedimiento buscar_producto) y, si lo encuentra, pone el campo en_cesta a FALSE en la posición que ocupaba el producto. En caso de no encontrarlo mostrará el mensaje de “Producto no encontrado”.

Si lo desea, puede usar la sección de Respuesta 5 para realizar sus comentarios.

RESPUESTA 5:





6. SEXTA CUESTIÓN:

Añada al programa anterior un procedimiento (modificar_producto) que pregunte al usuario el nombre del producto a modificar, lo busque y, si lo encuentra, le pregunte al usuario qué campo quiere cambiar, qué valor quiere asignarle y realice la actualización. En caso de no encontrar el producto, debe presentar el mensaje “Producto no encontrado”. Use los procedimientos ya creados en actividades anteriores siempre que pueda.

Si lo desea puede usar la sección de Respuesta 6 para realizar sus comentarios y aclaraciones.

RESPUESTA 6:





7. SEPTIMA 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 presente al usuario las siguientes opciones:
a. Añadir producto a la cesta.
b. Eliminar producto de la cesta.
c. Mostrar cesta.
d. Modificar producto de la cesta.
e. Contar productos de la cesta.
f. Salir del programa.

3) Llame al procedimiento necesario hasta que se escoja la opción de salir del programa.
Se recomienda utilizar un tamaño de cesta pequeño para facilitar la depuración del programa.

Escriba el programa en un fichero llamado Unidad8_2.pas y envíelo adjunto a un correo.

Puede hacer cualquier comentario o aclaración en la sección Respuesta 7.


----------LLEVO ESTO HASTA AHORA QUE SERÍA EL EJERCICIO ANTERIOR Y LE TENGO QUE AÑADIR AL CÓDIGO TODO ESTAS CUESTIONES---------- GRACIAS ---------------


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
program cestacompra;
 
const
 
TAMMAXCESTA=3;
 
type
 
tproducto= record
	nombre:string;                                                   (*types y registros*)
	unidades:integer;
	precio:real;
	en_cesta:boolean;
end;
 
tablacesta= array[0..TAMMAXCESTA] of tproducto;
 
procedure lee_producto(var producto:tproducto);
 
begin
          producto.en_cesta:=true;
          write('-Nombre Producto : ');
          readln(producto.nombre);
          write('-Unidades producto : ');
          readln(producto.unidades);                         (*procedimiento para leer el producto*)
          write('-Precio producto :  ');
          readln(producto.precio);
          writeln;
 
 
end;
 
 
procedure escribe_producto(producto:tproducto);
 
begin
 
     if(producto.en_cesta) then
 
     begin
                                                                     (*escribe por pantalla el producto anterior*)
     writeln('Nombre producto : ', producto.nombre);
     writeln('Numero de unidades : ', producto.unidades);
     writeln('Precio producto : ', producto.precio:4:2);
     writeln;
 
     end;
 
 
end;
 
procedure inicializa_cesta(var cesta:tablacesta; tam : integer);
 
Var
 
i:integer;
 
begin                                                                        (*procedimiento por el cual verificamos que el producto está en la cesta*)
 
      for i:= 1 to tam do
          cesta[i].en_cesta:=false;
end;
 
procedure mostrar_cesta(tablamostrar:tablacesta; tam : integer);
 
var
 
i:integer;
 
 
begin
                                                                        (*procedimiento para mostrar los productos de la cesta*)
for i := 1 to tam do
begin
 
           writeln ('--Productos en la cesta-- ');
 
           if (tablamostrar[i].en_cesta=true) then
           begin
           escribe_producto(tablamostrar[i]);
           end;
 
      end;
end;
 
procedure lee_cestaentera (var cesta:tablacesta; tam: integer);
 
var
 
i:integer;
 
begin
     for i:=1 to tam do
 
     begin
          lee_producto(cesta[i]);
     end;
 
end;
 
var
 
producto1: tproducto;
cesta1:tablacesta;                                                 (*Variables globales*)
 
 
 
begin
 
     inicializa_cesta(cesta1,TAMMAXCESTA);
     lee_producto(producto1);                                      (*módulo principal*)
     escribe_producto(producto1);
     lee_cestaentera(cesta1,TAMMAXCESTA);
     mostrar_cesta(cesta1,TAMMAXCESTA);
     readln;
 
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