Pascal/Turbo Pascal - 5, 6 y 7 tema 8

 
Vista:
sin imagen de perfil

5, 6 y 7 tema 8

Publicado por Erik (73 intervenciones) el 02/04/2014 17:12:13
Hola tengo que agregar lo siguiente al programa pascal que pondre a continuacion:

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

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

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

esto tengo que añadirlo al siguiente codigo pascal y crear un programa solo completo.

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
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;
 
  begin
     inicializa_cesta(cesta[1]);
     entradacesta(cesta[1]);
     clrscr;
     presentacesta(cesta[1]);
  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

5, 6 y 7 tema 8

Publicado por ramon (2158 intervenciones) el 04/04/2014 00:27:58
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
{A ver si sirve}
 
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.
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
sin imagen de perfil
Val: 35
Ha disminuido 1 puesto en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

5, 6 y 7 tema 8

Publicado por Enrique Martin (15 intervenciones) el 25/02/2019 23:04:24
Aquí otra posible solución:

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
Program TipoArrayRegistro;
 
uses
crt;
 
Const
 Tammaxcesta=4;
 
Type
 Producto=record
	nombre:string;
	solicita:integer;
	precio:real;
	en_cesta:boolean;
 end;
 (*Declaramos el tipo array de producto que nos pìde el ejercicio donde cada
   espacio del array es un tipo producto con sus respectivos campos*)
 tCesta= array [0..Tammaxcesta] of producto;
 
var
 (*Definimos igualmente las variables a usar a lo largo del programa, el
   ejercicio nos obligaba a la creación de una variable de tipo tCesta*)
 Carrito:tCesta;
 Mercancia:producto;
 
 
(*Desrrollamos el procedimiento que nos va a permitir rellenar los datos
  de la variable mercancia*)
Procedure Lee_Producto(VAR LeeMercancia:producto);
var
Stock: char;
 
Begin
 writeln('Vamos a introducir los datos del producto');
 writeln('Introduzca el nombre');
 readln(LeeMercancia.nombre);
 writeln('Introduzca las unidades solicitadas');
 readln(LeeMercancia.solicita);
 writeln('Introduzca el precio');
 
 (*Mediante un case-of asignamos si hay mercancia o no disponible*)
 readln(LeeMercancia.precio);
 writeln('¿Hay stock?: S/N');
            readln(stock);
            case stock of
                's','S':
                        LeeMercancia.en_cesta:=true;
                'n','N':
                        LeeMercancia.en_cesta:=false;
            end;
end;
 
(*Declaramos el procedimiento que nos permite ver los datos almacenados
  en la variable mercancia*)
 
Procedure Escribe_Producto(VerMercancia:producto);
begin
 writeln('El nombre del producto es: ',VerMercancia.nombre);
 writeln('La cantidad solicitada es: ',VerMercancia.solicita,' unidades.');
 writeln('El precio es: ',VerMercancia.precio:2:2,' euros.');
 writeln('Existencias:',VerMercancia.en_cesta);
end;
 
 
(*Declaramos el procedimiento que nos pide el ejerccio para modificar un
  valor dentro de los datos que contiene la tabla, en este caso a la
  variable en_cesta dentro de la tipo producto para inicializar la cesta*)
 
Procedure Inicializar_Cesta(VAR InicioCarrito:tCesta;initammaxcesta:integer);
var
i:integer;
 
begin
(*Utlizamos un bucle for-do para recorrer todo el array y modificar en cadena
  el atributo en toda la cesta*)
For i:= 1 to Initammaxcesta do
  begin
   if InicioCarrito[i].en_cesta = true then
    begin
      InicioCarrito[i].en_cesta:=false;
    end;
  end;
end;
 
 
(*El procedimiento del ejercicio anterior lo hemos modificado para poder
  operar con la tabla de registro, por eso es imprescindible definir
  una variable array de tipo, para poder trabajar con los datos
  entre funciones y procedimientos.*)
 
 
Procedure Leer_Producto(VAR CarritoPro:tCesta; Tammaxcestapro:integer);
var
i:integer;
 
Begin
(*Utilizamos el bucle for-do para introducir los datos en la tabla de registro*)
For i:= 1 to tammaxcestapro do
 begin
 writeln('Vamos a introducir los datos del producto');
 writeln('Introduzca el nombre');
 readln(carritoPro[i].nombre);
 writeln('Introduzca las unidades solicitadas');
 readln(carritoPro[i].solicita);
 writeln('Introduzca el precio');
 readln(carritoPro[i].precio);
 
 end;
end;
 
 
(*Como en el procedimiento anterior modificamos lo necesario para poder
  operar con la tabla de registro mostrando todos los productos que
  contiene la tabla*)
 
Procedure Mostrar_Producto(CarritoTotal:tCesta;TammaxcestaTo:integer);
var
i:integer;
 
begin
 For i:= 1 to TammaxcestaTo do
  begin
      writeln('El nombre del producto es: ',CarritoTotal[i].nombre);
      writeln('La cantidad solicitada es: ',CarritoTotal[i].solicita,' unidades.');
      writeln('El precio es: ',CarritoTotal[i].precio:2:2,' euros.');
      writeln('Existencias:',CarritoTotal[i].en_cesta);
  end;
end;
 
(*Ahora solo mostramos los productos que tienen stock, es decir el campo
  en_cesta esta en true*)
Procedure Mostrar_Cesta(VerCarrito:tCesta;VerTammaxcesta:integer);
var
i:integer;
 
begin
 for i:= 1 to Vertammaxcesta do
  begin
   if Vercarrito[i].en_cesta = true then
     begin
      writeln('El nombre del producto es: ',VerCarrito[i].nombre);
      writeln('La cantidad solicitada es: ',VerCarrito[i].solicita,' unidades.');
      writeln('El precio es: ',VerCarrito[i].precio:2:2,' euros.');
      writeln('Existencias:',VerCarrito[i].en_cesta);
     end;
  end;
end;
 
 
begin
 (*Llamamos a los procedimientos para iniciar el programa*)
 Lee_Producto(Mercancia);
 
 Escribe_Producto(Mercancia);
 
 Leer_Producto(Carrito,Tammaxcesta);
 
 Inicializar_Cesta(Carrito,Tammaxcesta);
 
 Mostrar_Producto(Carrito,Tammaxcesta);
 
 Mostrar_Cesta(Carrito,Tammaxcesta);
 
 readkey;
 
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