Pascal/Turbo Pascal - 4.2 tema 7

 
Vista:
sin imagen de perfil

4.2 tema 7

Publicado por Erik (73 intervenciones) el 27/03/2014 16:10:54
hola, tengo que hacer lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure limites( var arreglo : coleccion; var min: real; var max : real); {Podrían venir inicializados desde el progama principal}
 
  var
     indice : integer;
  begin
       max := -20;
       min :=  99999;
      for indice := 1 to TAMCOLECCION do
         begin
              if (arreglo[indice] > max) then
                 max := arreglo[indice];
              if (arreglo[indice] < min) then
                 min := arreglo[indice];
         end;
  end;

Modificar el procedimiento limites de la cuestión anterior (que es el programa de arriba)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.

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

4.2 tema 7

Publicado por Diego (98 intervenciones) el 28/03/2014 02:50:16
Lo más sencillo que se me ocurre en este momento es simplemente pasar las posiciones por referencia y agregar una asignación para que las posiciones vayan modificandose a lo largo del arreglo;

unicamente acordate de inicializar las posiciones dentro del procedure; ya que segun lo que vi no vienen inicializadas, aunque tampoco vi un var del programa principal lo dejo a tu criterio;

seria mas omenos así max := arreglo[indice]; luego de eso basta con agregar una asignacion para las posiciones: posMax := indice {Ya que el indice del arreglo es la posición del cuadro y como acaba de encontrar un maximo esa es la posicio en donde lo encontro}; con el minimo es casi igual (el mismo concepto).
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

4.2 tema 7

Publicado por Erik (73 intervenciones) el 28/03/2014 10:39:42
pero tengo que escribirlo en codigo, explicamelo en codigo pascal por favor.
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

4.2 tema 7

Publicado por Diego (98 intervenciones) el 28/03/2014 14:10:18
¿Expilar o hacer?,um...
Bue..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
{Nota: solo las personas que ya tienen los conocimientos aprenden del ejemplo; para el resto solo queda practicar y consultar}
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