Pascal/Turbo Pascal - Ayuda Urgente con Pascal

   
Vista:

Ayuda Urgente con Pascal

Publicado por Manuel (5 intervenciones) el 21/03/2013 13:23:20
Necestio ayuda con los siguiente ejercicios muchas gracias (A gradeceria que las soluciones de cada ejercicio esten separadas para porder distinguirlas)

Ejercicio1

Partiendo del programa de la cuestión anterior, sin modificar los procedimientos y funciones ya codificados, añada una función de nombre suma_coleccion que recorra la tabla y devuelva como resultado de la función, el valor total de la colección de cuadros.

Modifique a continuación el programa principal para que después de leer e imprimir la tabla, calcule la suma de la colección utilizando esta función, y la imprima por pantalla. Nuestro módulo principal debería tener la estructura:


(*-- Variables -- *)
Var
precios : Coleccion;
suma: real;

(*-- Programa Principal -- *)
Begin
lee_tabla(precios, TAMCOLECCION);
imprime_tabla(precios, TAMCOLECCION);

(* Aquí iría la llamada a la función suma_coleccion *)

(* Presentación de resultados *)
writeln('> Valor coleccion: ', suma:0:2);
End.
====================================================================
Ejercicio2
Partiendo del programa anterior, sin modificar los procedimientos y funciones ya codificados, introduzca un procedimiento de nombre limites que devolverá como parámetros por referencia el máximo y el mínimo de la colección.

RECORDATORIO:
A la hora de buscar el mínimo (o el máximo) dentro de una tabla se procede:

Se le da como valor inicial al mínimo, el primer valor de la tabla.
Se recorre el resto de la tabla y en cada iteración:
a) Se comprueba si el valor de la tabla es menor que mínimo. a.1) Si lo es al mínimo se le da el valor de dicho elemento.
a.2) Si es mayor no se hace nada y se pasa al siguiente elemento.

En el programa principal, la invocación deberá ser de la forma:


(*-- Variables -- *)
Var
precios1 : Coleccion;
min1, max1: real;

(*-- Programa Principal -- *)
Begin
lee_tabla(precios1, TAMCOLECCION);
imprime_tabla(precios1, TAMCOLECCION);

(* Aquí iría la invocación a limites *)

(* Presentación de resultados *)
Writeln('El maximo es ', max1:0:1, ' y el mínimo ' , min1:0:1);
End.

================================================================
Ejercicio 3

Modificar el procedimiento limites de la cuestión anterior para que además devuelva como parámetros por referencia, la posición en la tabla (el número del cuadro) donde se producen el máximo y el mínimo.

El programa principal sería similar a:

(*-- Programa Principal -- *)
Begin
lee_tabla(precios1, TAMCOLECCION);
imprime_tabla(precios1, TAMCOLECCION);

(* Aquí iría la invocación del nuevo procedimiento límites *)

Writeln('El maximo es ', max1:0:1, ' en la posicion ', pos_max1);
Writeln('El minimo es ', min1:0:1, ' en la posicion ', pos_min1);

End.
==================================================================
Ejercicio4

Partiendo del programa anterior, sin modificar los procedimientos y funciones ya codificados, el alumno deberá añadir un procedimiento de nombre busca_precio para un cliente que desea gastar una cantidad exacta (ni más ni menos).

Este procedimiento recibe como parámetro (entre otros) la cantidad a buscar en la tabla. Es decir que esta cantidad deberá ser pedida al usuario fuera del procedimiento, en este caso en el módulo principal.

Presentará por pantalla un mensaje cada vez que al recorrer la tabla encuentre un cuadro con el precio buscado, indicando su precio y su número. Si no encuentra ningún libro, deberá presentar un único mensaje al final del procedimiento indicando tal circunstancia.

Además el alumno deberá incluir en el módulo principal, la petición de búsqueda en un bucle que solicite la petición del precio a buscar hasta que el usuario introduzca el valor cero.
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

Ayuda Urgente con Pascal

Publicado por ramon (2072 intervenciones) el 21/03/2013 14:18:37
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
{A ver si ayuda esto y si es lo que quieres}
 
 Program Galeria;
uses
    crt;
Const
    tamacoleccion = 4;
Type
   coleccion = array[1..tamacoleccion] of real;
 Var
  precios : Coleccion;
  t : integer;
  datos : boolean;
  min, max : real;
  posmin, posmax : integer;
 
  procedure leertabla(var precios : coleccion);
  var
    pre : coleccion;
  begin
     clrscr;
     for t := 1 to tamacoleccion do
     begin
     write('   Entre Precio Del Cuadro N.',t,' : ');
     readln(pre[t]);
     end;
      precios := pre;
      datos := true;
   end;
 
  procedure imprimetabla(pre : Coleccion);
  begin
     if datos = true then
     begin
         for t := 1 to tamacoleccion do
         writeln('   N. : ',t,'   Precio : ',pre[t]:8:2);
         writeln;
         writeln('**** Pulse Enter ****');
     end
   else
       begin
          writeln('.... La Tabla Esta Vacia Pulse Enter ....');
       end;
  end;
 
  function sumacoleccion(pre : Coleccion) : real;
  var
     valor : real;
  begin
     clrscr;
     sumacoleccion := 0;
     if datos = true then
     begin
     valor := 0.0;
     for t := 1 to tamacoleccion do
     begin
     valor := valor + pre[t];
     writeln('   Precio Cuadro N. ',t,' : ',pre[t]:0:2);
     end;
     sumacoleccion := valor;
     write('El Total De La Coleccion Es : ');
   end
   else
       begin
          writeln('.... La Tabla Esta Vacia Pulse Enter ....');
       end;
  end;
 
  procedure minimomaximo(pre : coleccion; var min, max : real;
                                         var posmin, posmax : integer);
  var
    tempmin, tempmax : real;
    pomin, pomax : integer;
  begin
     pomin := 1;
     pomax := 0;
     tempmin := pre[1];
     tempmax := pre[1];
     for t := 1 to tamacoleccion do
     begin
        if tempmin > pre[t] then
        begin
        tempmin := pre[t];
        pomin := t;
        end;
        if tempmax < pre[t] then
        begin
        tempmax := pre[t];
        pomax := t;
        end;
     end;
       min := tempmin;
       max := tempmax;
       posmin := pomin;
       posmax := pomax;
  end;
 
  procedure precioindicadoesacto(pre : coleccion);
  var
     prec : real;
     pos : integer;
     preci : boolean;
  begin
      preci := false;
      if datos = true then
      begin
      writeln('   Entre El Precio Que Desea  ');
      writeln;
      write('  Precio : ');
      readln(prec);
      for t := 1 to tamacoleccion do
      if pre[t] = prec then
      begin
          preci := true;
          pos := t;
         writeln('  Producto De Precio : ',prec:0:2,' En Posicion : ',pos);
      end;
       writeln;
       if preci = true then
       begin
           writeln('Productos Con Ese Precio');
          writeln('  Pulse [Enter]');
       end
     else
        begin
           writeln('  Ningun Producto De Ese Precio Pulse [Enter]');
        end;
    end;
  end;
 
 
Begin
    datos := false;
    leertabla(precios);
    writeln;
    imprimetabla(precios);
    writeln(sumacoleccion(precios):8:2);
    minimomaximo(precios, min, max, posmin, posmax);
    writeln;
    writeln('  Laposicion Es : ',posmin,'  El Precio Minimo Es : ',min:0:2);
    writeln('  Laposicion Es : ',posmax,'  El Precio Maximo Es : ',max:0:2);
    precioindicadoesacto(precios);
    readln;
End.
 
{Ajustarlo a tus necesidades de conocimientos del pascal}
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