Pascal/Turbo Pascal - actividad 2 tema 8

 
Vista:
sin imagen de perfil

actividad 2 tema 8

Publicado por Erik (73 intervenciones) el 07/04/2014 16:02:44
Hola tengo que hacer lo siguiente:

A partir del programa de la actividad 1 (el codigo pascal que voy a poner despues) vamos crear uno más complejo. Cada cuestión irá incrementando la funcionalidad de la versión anterior. 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.


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


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.



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.



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



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.



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

este es el codigo del programa anterior en el que se tiene que basar este programa:

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
118
119
120
121
program respuestas;
 uses
    crt;
  const
     TAMMAXCESTA = 4;
 
  type
 
   Producto = record
       nombre : string[100]; {Nombre del ploducto}
       numero : integer; {Cantidad de productos}
       precio : real; {Precio por unidad del producto}
       campo  : boolean; {Existe producto true se anulo false}
     end;
 
  var
    cesta : array[0..TAMMAXCESTA] of producto;
    cont : integer;
 
 
    procedure entradacesta(var c : producto);
    begin
       clrscr;
       writeln('**** Entrada Producto A Cesta ****');
       with c do
       begin
          write('  Nombre Producto            : ');
          readln(nombre);
          write('  Cantidad De Productos      : ');
          readln(numero);
          write('  Precio Unidad Del Producto : ');
          readln(precio);
          campo := true;
       end;
    end;
 
   procedure presentacesta(c : producto);
   begin
      with c do
      begin
         writeln('  Producto      = ',nombre);
         writeln('  Cantidad      = ',numero);
         writeln('  Precio Unidad = ',Precio:0:2);
         if campo = true then
         writeln('  La Cesta Esta Activa')
       else
         writeln('  La Cesta Esta Inactiva');
      end;
        writeln;
        writeln('  Pulse Una Tecla');
        readkey;
   end;
 
   procedure inicializa_cesta(var c : producto);
   begin
       with c do
       begin
          nombre := ' ';
          numero := 0;
          precio := 0.0;
          campo := false;
       end;
   end;
 
   procedure mostrar_producto(n : integer);
   begin
   with cesta[n] do
      begin
         writeln('  Producto      = ',nombre);
         writeln('  Cantidad      = ',numero);
         writeln('  Precio Unidad = ',Precio:0:2);
         if campo = true then
         writeln('  La Cesta Esta Activa')
       else
         writeln('  La Cesta Esta Inactiva');
      end;
        writeln;
        writeln('  Pulse Una Tecla');
        readkey;
     end;
 
   procedure mostrar_cesta(c : producto);
   begin
      if c.campo = true then
      begin
       with c do
       begin
         writeln('  Producto      = ',nombre);
         writeln('  Cantidad      = ',numero);
         writeln('  Precio Unidad = ',Precio:0:2);
         if campo = true then
         writeln('  La Cesta Esta Activa')
       else
         writeln('  La Cesta Esta Inactiva');
      end;
        writeln;
        writeln('  Pulse Una Tecla');
        readkey;
      end;
   end;
 
 
 
 
  begin
    cont := 1;
    while cont < TAMMAXCESTA + 1 do
    begin
     inicializa_cesta(cesta[cont]);
     entradacesta(cesta[cont]);
     cont := cont + 1;
     end;
 
     clrscr;
     for cont := 1 to TAMMAXCESTA do
     begin
     mostrar_cesta(cesta[cont]);
     clrscr;
     end;
 
  end.

gracias de antemano.
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

actividad 2 tema 8

Publicado por ramon (2158 intervenciones) el 09/04/2014 00:38:21
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
{Mira esto te sirve}
 
program respuestas;
 uses
    crt;
  const
     TAMMAXCESTA = 4;
 
  type
   string100 = string[100];
   Producto = record
       nombre : string[100]; {Nombre del ploducto}
       numero : integer; {Cantidad de productos}
       precio : real; {Precio por unidad del producto}
       campo  : boolean; {Existe producto true se anulo false}
     end;
 
  var
    cesta : array[0..TAMMAXCESTA] of producto;
     cont : integer;
    produ : string100;
 
    procedure entradacesta(var c : producto);
    begin
       clrscr;
       writeln('**** Entrada Producto A Cesta ****');
       with c do
       begin
          write('  Nombre Producto            : ');
          readln(nombre);
          write('  Cantidad De Productos      : ');
          readln(numero);
          write('  Precio Unidad Del Producto : ');
          readln(precio);
          campo := true;
       end;
    end;
 
   procedure presentacesta(c : producto);
   begin
      with c do
      begin
         writeln('  Producto      = ',nombre);
         writeln('  Cantidad      = ',numero);
         writeln('  Precio Unidad = ',Precio:0:2);
         if campo = true then
         writeln('  La Cesta Esta Activa')
       else
         writeln('  La Cesta Esta Inactiva');
      end;
        writeln;
        writeln('  Pulse Una Tecla');
        readkey;
   end;
 
   procedure inicializa_cesta(var c : producto);
   begin
       with c do
       begin
          nombre := ' ';
          numero := 0;
          precio := 0.0;
          campo := false;
       end;
   end;
 
   procedure mostrar_producto(n : integer);
   begin
   with cesta[n] do
      begin
         writeln('  Producto      = ',nombre);
         writeln('  Cantidad      = ',numero);
         writeln('  Precio Unidad = ',Precio:0:2);
         if campo = true then
         writeln('  La Cesta Esta Activa')
       else
         writeln('  La Cesta Esta Inactiva');
      end;
        writeln;
        writeln('  Pulse Una Tecla');
        readkey;
     end;
 
   procedure mostrar_cesta(c : array of producto;t : integer);
   begin
      if c[t].campo = true then
      begin
       with c[t] do
       begin
         writeln('  Producto      = ',nombre);
         writeln('  Cantidad      = ',numero);
         writeln('  Precio Unidad = ',Precio:0:2);
         if campo = true then
         writeln('  La Cesta Esta Activa')
       else
         writeln('  La Cesta Esta Inactiva');
      end;
        writeln;
        writeln('  Pulse Una Tecla');
        readkey;
      end;
   end;
 
  function cuenta_productos(c : array of producto) : integer;
  var
     tiene, t : integer;
  begin
      tiene := 0;
      cuenta_productos := 0;
      for t := 1 to TAMMAXCESTA do
      begin
      if c[t].campo = true then
      tiene := tiene + 1;
      end;
       cuenta_productos := tiene;
  end;
 
  function busca_libre(lib : array of producto) : integer;
  var
    unl, i : integer;
    begin
       busca_libre := 0;
       for i := 1 to tammaxcesta do
       begin
          if lib[i].campo = false then
          begin
             unl := i;
             break;
          end;
       end;
         busca_libre := unl;
    end;
 
   procedure incluir_producto_en_cesta(var ent : array of producto);
   var
      li : integer;
   begin
      li := 0;
      li := busca_libre(ent);
      if li > 0 then
      begin
         clrscr;
         writeln('**** Entrada Nuevo Producto A Cesta ****');
         with ent[li] do
         begin
          write('  Nombre Producto            : ');
          readln(nombre);
          write('  Cantidad De Productos      : ');
          readln(numero);
          write('  Precio Unidad Del Producto : ');
          readln(precio);
          campo := true;
       end;
      end
   else
       begin
          writeln('  La Cesta Esta Llena Pulse Una Twcla');
          readkey;
       end;
   end;
 
  function buscar_producto(ces : array of producto; cu : string100) : integer;
  var
     pos, i : integer;
     prod : string100;
     m : integer;
  begin
      for m := 1 to length(cu) do
      begin
      cu[m] := upcase(cu[m]);
      end;
      buscar_producto := 0;
      for i := 1 to tammaxcesta do
      begin
         for m := 1 to length(ces[i].nombre) do
         begin
         prod[m] := upcase(ces[i].nombre[m]);
         prod[0] := chr(m);
         end;
         if prod = cu then
         begin
            pos := i;
            break;
         end;
      end;
       buscar_producto := pos;
  end;
 
  procedure eliminar_producto_de_cesta(var dd : array of producto;
                                        cual : string100);
  var
    t, h : integer;
    tempo : string100;
   begin
      for h := 1 to length(cual) do
      cual[h] := upcase(cual[h]);
      for h := 1 to tammaxcesta do
      begin
         for t := 1 to length(dd[h].nombre) do
         begin
           tempo[t] := upcase(dd[h].nombre[t]);
           tempo[0] := chr(t);
        end;
         if tempo = cual then
         begin
             fillchar(dd[h],sizeof(Producto),0);
             break;
         end;
      end;
   end;
 
   procedure modificar_producto(var mp : array of producto);
   var
     h, t : integer;
     opc : char;
   begin
     writeln('  Modificacion Producto Cesta ');
     writeln;
     for h := 1 to tammaxcesta do
     begin
       writeln('  ',h,' = ',mp[h].nombre);
     end;
     writeln;
     writeln('   Elija Opcion ');
     repeat
        opc := readkey;
     until opc in['1'..'9'];
     t := ord(opc) - 48;
     mostrar_producto(t);
     writeln;
     write('  Producto      : ');
     readln(mp[t].nombre);
     write('  Cantidad      : ');
     readln(mp[t].numero);
     write('  Precio Unidad : ');
     readln(mp[t].Precio);
     mp[t].campo := true;
   end;
 
 
   procedure menu;
   var
     sal : boolean;
     tes : char;
   begin
      sal := false;
      cont := 1;
    repeat
       clrscr;
       writeln('**** Menu Jeneral ****');
       writeln;
       writeln(' 1 = A¤adir producto a la cesta');
       writeln(' 2 = Eliminar producto de la cesta');
       writeln(' 3 = Mostrar cesta');
       writeln(' 4 = Modificar producto de la cesta');
       writeln(' 5 = Contar productos de la cesta');
       writeln(' 6 = Salir del programa');
       writeln;
       writeln('     Elija Opcion ');
     repeat
         tes := readkey;
     until tes in['1','2','3','4','5','6'];
    case tes of
  '1' : begin
           if cont < tammaxcesta then
           begin
           entradacesta(cesta[cont]);
           end;
           cont := cont + 1;
           if cont > tammaxcesta then
           begin
           writeln('  La Cesta Esta Llena Pulse Una Tecla');
           readkey;
           end;
        end;
  '2' : begin
         write('  Entra Nombre Producto A Anular : ');
         readln(produ);
         eliminar_producto_de_cesta(cesta,produ);
        end;
  '3' : begin
          write('  Entra Nombre Producto A Mostrar : ');
          readln(produ);
          mostrar_cesta(cesta,buscar_producto(cesta,produ));
        end;
  '4' : modificar_producto(cesta);
  '5' : begin
        writeln('*** Productos En La Cesta ***');
        writeln;
        write('  Tiene = ',cuenta_productos(cesta));
        writeln;
        writeln('   Pulse Una Tecla  ');
        readkey;
        end;
  '6' : sal := true;
    end;
    until sal = true;
  end;
 
 
 
  begin
    cont := 1;
    while cont < TAMMAXCESTA + 1 do
    begin
     inicializa_cesta(cesta[cont]);
     cont := cont + 1;
     end;
     menu;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar