Pascal/Turbo Pascal - Ayuda con un ejercicio en pascal

 
Vista:
sin imagen de perfil
Val: 15
Ha aumentado su posición en 17 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Ayuda con un ejercicio en pascal

Publicado por Alejandro (5 intervenciones) el 17/06/2021 20:21:12
Hola muy buenas, soy iniciado en informática y necesito ayuda con un ejercicio en pascal, el problema es el siguiente:


La Gerencia del IUCAF College Institute quiere determinar la mediana de los salarios anuales de sus empleados para proporcionar la información a un estudio del gobierno. Escríbase un programa que exhiba el número de empleados y la mediana de sus salarios.

Explicación la mediana de un conjunto de números es el número que queda en el punto medio cuando se ordenan los números en forma ascendente (de menor a mayor). Por ejemplo, para determinar la mediana de los siguientes números

85, 53, 98, 86, 42

se arreglan primero en orden ascendente (es decir, se clasifican)

42, 53, 85, 86, 98

y después elige el número que queda a la mitad, es decir, 85.


Por favor, le estaré agradecido
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 con un ejercicio en pascal

Publicado por ramon (2158 intervenciones) el 17/06/2021 22:24:44
mira si esto te sirve.

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
program salarios;
  uses
     crt;
   var
     sala : array[0..50] of word;
     num1, num2 : word;
 
 
  procedure  entrasalarios;
  var
    cont : integer;
    num : word;
    sal : boolean;
  begin
     cont := 1;
     sal := false;
     clrscr;
     writeln(' Finaliza Entradas N§ = 0 [Maximos 50]');
    repeat
    write(' Salario Empleado N§ ',cont,' : ');
    readln(num);
    if num = 0 then
    sal := true
  else
     begin
       sala[cont] := num;
       cont := cont + 1;
     end;
    until num = 0;
    sala[0] := cont - 1;
  end;
 
   function mediana : word;
   var
     cut1, cut2 : word;
     temp : word;
   begin
     mediana := 0;
     for cut1 := 1 to sala[0] - 1 do
      for cut2 := sala[0] downto cut1 + 1 do
         if sala[cut1] > sala[cut2] then
         begin
            temp := sala[cut2];
            sala[cut2] := sala[cut1];
            sala[cut1] := temp;
         end;
       if sala[0] mod 2 = 0 then
       mediana := sala[sala[0] div 2]
    else
      mediana := sala[sala[0] div 2 + 1];
   end;
 
   begin
     entrasalarios;
     clrscr;
     writeln(' La Mediana Es : ',mediana);
     writeln;
     for num1 := 1 to sala[0] do
     write('  ',sala[num1]);
     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
sin imagen de perfil
Val: 15
Ha aumentado su posición en 17 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Ayuda con un ejercicio en pascal

Publicado por Alejandro (5 intervenciones) el 18/06/2021 08:37:58
Muchisimas gracias!!!!! me acabas de sacar de un embrollo, te lo agradezco muchísimo!
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

Ayuda con un ejercicio en pascal

Publicado por Armando Fuenmayor (6 intervenciones) el 20/06/2021 04:50:06
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
program mediana;
uses crt;
const
   max = 11 ;
type
  arre = array[1..max] of real;
var
  A : arre;
 con ,  q : integer ;
  verdad :  boolean ;
  res  :  string ;
 
 
function espar(nu : integer) : Integer ;
begin
  espar :=  (nu mod 2) ;
end;
function mediana(Vect : arre ; n:integer) : real;
  var
    a , b : integer ;
begin
  a := 0;
  b := 0;
  if  (espar(n) = 1) then
  begin
    a := (n div 2) + 1;
    mediana := vect[a];
  end
  else
  begin
    a := n div 2;
    b := a + 1;
    mediana := (vect[a] + vect[b])/2;
  end;
end;
 
 
procedure burbuja(var vect : arre ; n:integer );
var
  temp : real;
  i , j : Integer ;
begin
  temp := 0.0 ;
  for i := 1 to n-1 do
    for j := i+1 to n do
        if (vect[i] > vect[j]) then
        begin
          temp := vect[i] ;
          vect[i]  := vect[j] ;
          vect[j]  := temp  ;
        end;
end;
 
/*************************/
/*  programa principal   */
/*************************/
begin
  verdad := true ;
  con := 0 ;
  while verdad do
  begin
  clrscr;
  if (con = max) then
  begin
     writeln('arreglo lleno ');
     verdad := false ;
     break ;
  end
  else
  begin
    inc(con);
    write('Ingrese sueldo nro ', con,'= ');
    readln(A[con]);
  end;
 
  WriteLn();
  write('Otro Sueldo [S/N] ');
  read(res);
 
    if (upcase(res) <> 'S') then
    begin
       verdad := false ;
    end;
  end;
 
  writeln;
  writeln('Arreglo normal ');
 
 
  for q := 1 to con do
  begin
    writeln('Nro ',q, ' = ',A[q]);
  end;
 
  writeln;
  writeln;
  writeln;
  writeln('Arreglo ordenado ');
  burbuja(A,con);
 
  for q := 1 to con do
  begin
    writeln('Nro ',q, ' = ',A[q]);
  end;
  writeln;
  writeln('Mediana ', mediana(A,con));
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar