Pascal/Turbo Pascal - 3.2 tema 7

 
Vista:
sin imagen de perfil

3.2 tema 7

Publicado por Erik (73 intervenciones) el 26/03/2014 19:30:44
hola a partir del siguiente codigo tengo que hacer lo siguente:

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
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;
 
   (*-- 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;
 
 
 
 
    (*-- Programa Principal -- *)
   Begin
      clrscr;
      lee_tabla(precios, TAMCOLECCION);
      clrscr;
      imprime_tabla(precios, TAMCOLECCION);
      readln;
    End.

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.

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

3.2 tema 7

Publicado por Diego (98 intervenciones) el 26/03/2014 19:48:45
Tenés que recorrer el arreglo buscando el precio más bajo y el precio mas alto; Como el arreglo no tiene ningun tipo de orden se tiene que recorrer completamente preguntado por el minimo y el máximo.

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;
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

3.2 tema 7

Publicado por Enrique Martin (15 intervenciones) el 13/02/2019 16:53:49
Aquí les dejo esta otra 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
Program GaleriaMinimoYMaximo;
 
uses
crt;
 
(*-- Constantes globales al programa -- *)
(*Declaramos una constante que va a determinar la longitud de la tabla donde
  vamos a almacenar los datos de los cuadros*)
 
Const
 TamColeccion=4;
 
(*-- Tipos globales al  programa -- *)
(*Declaramos el tipo de dato necesario para operar con la tabla y con los
  distintos procedimientos*)
 
Type
 tcoleccion= array [1..TamColeccion] of real;
 
(*-- Variables del módulo principal -- *)
(*Variable global necesaria para desarrollar el programa, una tabla con
  distintos espacios para almacenar datos y otra para sumar los precios*)
 
Var
  precios1: tColeccion;
 
  min1,max1: real;  //Declaramos las dos nuevas variables necesarias
 
(*-- Funciones y procedimientos -- *)
(*Desarrollamos el procedimiento que nos va a permitir rellenar con datos
  los espacios de la tabla*)
 
Procedure Lee_Tabla(var preciosLee: tcoleccion; TamColeccionLee:integer);
var
i:integer;
 
begin
(*Pedimos los datos y con la estructura for-do los introducimos en la tabla*)
 
 writeln('Introduzca precio de los cuadros: ');
 for i:= 1 to TamColeccionLee do
     begin
      write('cuadro ',i,' ');
      read(preciosLee[i]);
     end;
end;
 
(*Definimos el procedimiento necesario para mostar en pantalla los datos que
  hemos recogido en el procedimiento anterior. Para ver los datos de la tabla
  necesitamos un estructura iterativa, he escogido la for-do*)
 
 (*Los parametros se pasan por referencia para operar de foram transversal
   en los procedimientos*)
 
Procedure Imprime_Tabla(var PreciosIm: tcoleccion; TamColeccionIm:integer);
var
 i:integer;
 
begin
 For i:= 1 to TamColeccionIm do
     begin
      writeln('>Precio de cuadro ',i,' : ', preciosIm[i]:5:2);
     end
end;
 
(*Declaramos la funcion suma para sumar todos los precios almacenados
  en la tabla*)
 
(*Declaramos el procedimiento que nos va a permitir comparar cada elemento
  de la tabla para buscar el dato con mayor valor numerico*)
 
Procedure limites (var minimo:real; var maximo:real; var PreciosLi:tcoleccion;TamcoleccionLi:integer);
 
Var
 i:integer;
 
begin
(*Para realizar la busqueda primero debemos asignar un valor como maximo y otro
  como minimo*)
 
 minimo:= preciosLi[1];
 maximo:= preciosLi[3];
 
(*Mediante la estructura iterativa for-to buscaremos en la tabla el valor
  maximo y minimo comparando entre ellos mediante los operadores logicos
  '<' y '>'*)
 
for i:= 1 to TamColeccionLi do
    begin
     if minimo> preciosLi[i] then
        Minimo:= preciosLi[i];
 
     if maximo< preciosLi[i] then
        maximo:= preciosLi[i];
    end;
end;
 
(*-- Programa Principal -- *)
 
Begin
 
(*Inicia el bloque principal y llamamos a los procedimientos*)
 
  lee_tabla(precios1, TamColeccion);
 
  imprime_tabla(precios1, TamColeccion);
 
  (*Llamamos al procedimimento que nos devolvera por pantalla la busqueda
    del mayor y menor valor*)
 
  limites(min1,max1,precios1,TamColeccion);
  Writeln('El precio maximo es: ',max1:0:1,' Y el minimo: ' , min1:0:1);
 
  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