Pascal/Turbo Pascal - 5.2 tema 7 (3)

 
Vista:
sin imagen de perfil

5.2 tema 7 (3)

Publicado por Erik (73 intervenciones) el 09/04/2014 15:22:56
hola tengo que corregir lo siguiente, aqui dejo lo que tengo que corregir.

Has olvidado llamar a suma y a límites en el principal

procedure busca_precio(cant : real; cl : coleccion); te falta pasarle la dimensión del array.

Mira, leemos otra vez los requerimientos "

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

Es decir debes recorrer todo el array desde la posición 1 hasta el final. Usando un for. Y nos pide que cada vez que encuentre un cuadro con el precio cantidad lo muestre en pantalla. Mira será así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Procedure busca_precio(cuadros:coleccion;tamano: integer; presupuesto:real);
    var
    i:integer;
 
   encontrado: integer
    Begin
     encontrado:=0;
        for i:=1 to tamano do
            if (cuadros[i] = presupuesto) then
                begin
                    writeln('El precio del cuadro numero ',i,' coincide con el precio a buscar.');
                    readln;
                    encontrado:=1;
                end;
            if (encontrado=0) then writeln('No se encontraron coincidencias');
 
        writeln('******************************');
 
    end;


aqui esta el programa en cuestion que hay que corregir:

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
Program Galeria;
  uses
    crt;
  (*-- Constantes globales al programa -- *)
   Const
       TAMCOLECCION = 4;
 
   (*-- Tipos globales al programa -- *)
   Type
      coleccion = array[1..tamcoleccion] of real;
 
   (*-- Variables del módulo principal -- *)
    Var
    precios : Coleccion;
    prec : real;
 
   (*-- Funciones y procedimientos -- *)
  procedure lee_tabla(var t : coleccion; n : integer);
  var
    i : integer;
  begin
     i := 1;
     writeln('  Entre Precio Cuadro ');
   while i < n + 1 do
   begin
      write('  Numero ',i,' : ');
      readln(t[i]);
      i := i + 1;
   end;
  end;
 
  procedure imprime_tabla(t : coleccion; n : integer);
  var
    i : integer;
  begin
     i := 1;
   writeln('  Los Resultados Son ');
   writeln;
   while i < n + 1 do
   begin
      writeln(' Num. : ',i,'  Precio : ',t[i]:0:2);
      i := i + 1;
   end;
  end;
 
  function  sumar_arreglo( var arreglo : coleccion) : real;
  var
     indice : integer;
     acumulador : real;
  begin
       for indice := 1 to TAMCOLECCION do
           begin
              acumulador := acumulador + arreglo[indice];
           end;
       sumar_arreglo := acumulador;
  end;
 
 
 
  procedure limites( var arreglo : coleccion;
                     var min: real;
                     var max : real;
                     var posMax: integer;
                     var posMin : integer);
    var
        indice : integer;
    begin
        max := -20;
        min := 99999;
        posMax := -1;     (*se inicializan con un valor que no podría
                           ser para una verificación; de ser necesaria*)
        posMin := -1;
        for indice := 1 to TAMCOLECCION do
            begin
                if (arreglo[indice] > max) then
                  begin
                    max := arreglo[indice];
                    posMax := indice;
                  end;
                if (arreglo[indice] < min) then
                  begin
                    min := arreglo[indice];
                    posMin := indice;
                  end;
            end;
    end;
 
  procedure busca_precio(cant : real; cl : coleccion);
  var
    d : integer;
    nn : integer;
    pre : real;
    as : boolean;
  begin
      d := 1;
      as := false;
      while d < TAMCOLECCION + 1 do
      begin
         if cant = cl[d] then
         begin
         nn := d;
         pre := cl[d];
         as := true;
         break;
         end
       else
         d := d + 1;
      end;
      writeln;
      if as = true then
      writeln('  Numero = ',nn,'  Precio = ',pre:0:2)
    else
      writeln('  Precio Igual No Encontrado');
      writeln;
      writeln('  Pulse Una Tecla ');
  end;
 
    (*-- Programa Principal -- *)
   Begin
      clrscr;
      lee_tabla(precios, TAMCOLECCION);
      clrscr;
      imprime_tabla(precios, TAMCOLECCION);
      prec := 1;
      while prec > 0 do
      begin
      writeln;
      write('  Entre Precio A Buscar : ');
      readln(prec);
      busca_precio(prec,precios);
      end;
      readkey;
    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
sin imagen de perfil

5.2 tema 7 (3)

Publicado por Diego (98 intervenciones) el 09/04/2014 18:35:13
No hace falta mandar el tamaño del arreglo como un parametro ya que es una constante que fue declarada entes de los módulos entonces todos los módulos ya saben el valor de esa constante.
No revisé bien ese ciclo del whili, pero si fue realizado correctamente vendría a ser igual que el for, pero solo si acaba luego de analizar el último elmento.
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

5.2 tema 7 (3)

Publicado por Erik (73 intervenciones) el 10/04/2014 17:06:20
explicamelo en codigo 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
sin imagen de perfil

5.2 tema 7 (3)

Publicado por Diego (98 intervenciones) el 11/04/2014 16:39:19
Eso no tiene que ver con el código sino en la forma en la que trabaja pascal;
Una constante es un dato que es declarado entes del desarrollo del programa(después d ela declaración de los tipos de datos) así como las variables globales, solo con la diferencia de que una constante no puede ser modificada durante la ejecución del programa. En pocas palabras solamente sirve para consulta y no para trabajar en ella: por ejemplo:
declarar una contante luego del type con el nombre pi, y en ella cargar 3.14. pi no se podría modificar pero pero servisira para usar ese valor a lo larog de todo el programa; las constantes son más bien para que el nombre de ellas te recerde un valor
uses (unidades a usar)
nombre de las unidades;
Type
nombre_del_tipo_de_dato : tipo de dato;
var
variable_global: tipo de dato (podrá ser usada a lo largo del programa ya sea para para consulta o modificación)
const
constante : tipo de dato(variable que podrá ser usada a lo largo del programa pero solo para consulta y no para modificación).

modulos (procedure y function correctamente decalados)
var (variables locales al programa; su declaración solo sirve en el programa principal; los módulos no pueden modificar su valor a menos que se lo indiquen)
begin (comienzo del programa principal)
end. (fin del programa)
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

5.2 tema 7 (3)

Publicado por Erik (73 intervenciones) el 12/04/2014 20:28:56
si, esta bien pero muestramelo con el codigo pascal que escribi yo, configuralo para que se corriga los errores.
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

5.2 tema 7 (3)

Publicado por Diego (98 intervenciones) el 13/04/2014 03:33:39
Como ya te dije no tienen nada de malo los codigos, lo que digo es que esa es la manera en la trabaja y hace uso de la memoria pascal. por eso te digo que es casi la mejor manera de usar:
Resumiendo: no hay nada que corregir. (amenos que se requiera una optimización si es que la hay, se busca que optimizar y se ahorran unidades de tiempo).
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