Pascal/Turbo Pascal - Duda tercios

 
Vista:
sin imagen de perfil

Duda tercios

Publicado por Pablo (11 intervenciones) el 20/09/2016 02:03:19
Hola ! Tengo una duda. Tengo un ejercicio para hacer en Pascal que me pide mostrar la lista en tercios. ¿Cómo se supone que debo hacer esto ? Aclaro que recién estoy aprendiendo a programar :) Muchas gracias por su ayuda.

Aquí les dejo el enunciado completo:

Los siguientes datos (arreglo de registros) representan los sueldos que deben cobrar los em-pleados de una empresa, el gerente necesita que Ud. diseñe un programa que muestre la lista, en tercios, ordenada por apellidos y los tercios van desde los empleados que menos cobran a los que más cobran. Enuncie las alternativas que puede realizar, luego implemente la mejor de ellas.

Mendez Ramos Mamani Tolaba Condori Tolaba Aban Lamas Gomez Cruz Abalos Ramirez Acosta
899.5 2575.3 1896.5 789.2 3582.7 1010.9 507.9 4754.7 695.9 2566.8 775.6 2000.8 1555.6
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

Duda tercios

Publicado por ramon (2158 intervenciones) el 21/09/2016 17:18:31
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
{A ver si esto te ayuda}
 
program tercios;
  uses
     crt;
  const
     maxemp = 13;
     apellidos : array[1..maxemp] of string[12] = (
     'Mendez','Ramos','Mamani','Tolaba','Condori',
     'Tolabe','Aban','Lamas','Gomez','Cruz','Abalos','Ramirez','Acosta');
    elsueldo : array[1..maxemp] of real = (
    899.5,2575.3,1896.5,789.2,3582.7,1010.9,507.9,4754.7,695.9,
    2566.8,775.6,2000.8,1555.6);
  type
     string12 = string[12];
     empleados = record
            apellido : string12;
            sueldo   : real;
          end;
   var
     porter, referenc : array[0..maxemp - 1] of empleados;
     conta : integer;
 
    procedure asignadatos(var r : array of empleados);
    begin
       for conta := 0 to maxemp - 1 do
       begin
          r[conta].apellido := apellidos[conta + 1];
          r[conta].sueldo := elsueldo[conta + 1];
       end;
    end;
 
    procedure ordenaporapellidos(var o : array of empleados);
    var
      temp : empleados;
      p1, p2 : integer;
    begin
       for p1 := 0 to  maxemp - 1 do
         for p2 := maxemp - 1 downto p1 + 1 do
         if o[p1].apellido > o[p2].apellido then
         begin
           temp:= o[p1];
           o[p1] := o[p2];
           o[p2] := temp;
         end;
    end;
 
    procedure portercio;
    var
       tempo : empleados;
       x, y, d, h, jj : integer;
    begin
       for jj := 0 to maxemp - 1 do
       porter[jj] := referenc[jj];
       for d := 0 to maxemp - 1 do
         for h := maxemp - 1 downto d + 1 do
         if porter[d].sueldo > porter[h].sueldo then
         begin
            tempo := porter[d];
            porter[d] := porter[h];
            porter[h] := tempo;
         end;
      x := 24;
      y := 2;
      for jj := 0 to maxemp - 1 do
      begin
         gotoxy(x,y);write(porter[jj].apellido,'   ',porter[jj].sueldo:0:1);
         x := x + 20;
         y := y + 2;
         if x > 44 then
         x := 24;
      end;
    end;
 
    procedure presenta(p : array of empleados);
    var
      x, y, t : integer;
    begin
       x := 2;
       y := 2;
       for t := 0 to maxemp - 1 do
       begin
          gotoxy(x,y);write(p[t].apellido,'   ',p[t].sueldo:0:1);
          gotoxy(20,y);write(chr(179));
          gotoxy(20,y - 1);write(chr(179));
          y := y + 2;
       end;
    end;
 
  begin
     asignadatos(referenc);
     ordenaporapellidos(referenc);
     clrscr;
     presenta(referenc);
     portercio;
     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