Pascal/Turbo Pascal - Ordenar arreglos

 
Vista:

Ordenar arreglos

Publicado por David Romero (2 intervenciones) el 14/04/2001 08:57:37
Necesito ayuda para crear un programa en pascal que resuelva lo siguiente:
Se tienen las calificaciones de un grupo de 50 alumnos. Se necesita saber cuántos alumnos tienen una calificación superior al promedio del grupo, además de obtener un listado de las calificaciones de los alumnos ordenados por promedio en forma descendente.
Se que debe utilizarse un arreglo, pero no se como se ordena ni como obtener el numero de alumnos con mayor promedio.
De antemano muchas gracias por la ayuda.
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

RE:Ordenar arreglos

Publicado por Diego Romero (282 intervenciones) el 15/04/2001 02:43:40
Respuesta va por mail. Trataré en un proximo mensaje dejar el codigo del algoritmo de ordenación por el metodo QuickSort que es el mas rápido (aunque tiene limitaciones) por si a alguien mas le interesa.
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

RE:Ordenar arreglos

Publicado por gerardo (282 intervenciones) el 18/11/2002 05:17:38
le agradeceria si me envia algo sobre el quick sort ya que tengo problemas para comprenderlo a la per feccionñgracias...
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

Algoritmo QuickSort

Publicado por Diego Romero (282 intervenciones) el 15/04/2001 04:42:26
{Encapsula el verdadero procedimiento}
procedure quicksort(var arreglo:tarray; contador:integer);
{Procedimiento encapsulado}
procedure qs(l,r:integer; var ar:tarray);
var
i,j:integer; {Indices de trabajo}
x,y:tdato; {Para hacer intercambios de elementos}
begin {qs}
i:=l; {Principio de la division}
j:=r; {Fin de la division}
x:=ar[(l+r) div 2]; {Saco el elemento en la mitad de la division}
repeat {Repito...}
while ar[i] > x do {Comparo la parte inferior de la division}
inc(i);
while x > ar[j] do {Comparo la parte superior de la division}
dec(j);
if i <= j then {Si el indice de la parte inferior de la division}
{es menor o igual al indice de parte superior de la division...}
begin
y:=ar[i]; {Hago el cambio}
ar[i]:=ar[j];
ar[j]:=y;
inc(i); {Salto el elemento de la parte inferior}
dec(j); {Salto el elemento de la parte superior}
end; {if i <= j}
until i>j; {... hasta que la parte inferior choque con la parte superior}
if l < j then qs(l,j,ar); {Si la parte inferior no ha sido ordenada la ordeno}
if l < r then qs(i,r,ar); {Si la parte superior no ha sido ordenada la ordeno}
{... si no hay nada qu‚ ordenar fin de la ordenaci¢n}%
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

RE:Algoritmo QuickSort

Publicado por Pascual (94 intervenciones) el 22/11/2006 12:03:09
Le faltaba una última cosa, lo pongo para que lo veais, funciona perfectamente:

{Encapsula el verdadero procedimiento}
procedure quicksort(var arreglo: lista; contador: integer);
{Procedimiento encapsulado}
procedure qs(l, r: integer; var ar: lista);
var
i, j: integer; {Indices de trabajo}
x, y: integer; {Para hacer intercambios de elementos}
begin {qs}
i := l; {Principio de la division}
j := r; {Fin de la division}
x := ar[(l + r) div 2]; {Saco el elemento en la mitad de la division}
repeat {Repito...}
while ar[i] > x do {Comparo la parte inferior de la division}
inc(i);
while x > ar[j] do {Comparo la parte superior de la division}
dec(j);
if i <= j then {Si el indice de la parte inferior de la division}
{es menor o igual al indice de parte superior de la division...}
begin
y := ar[i]; {Hago el cambio}
ar[i] := ar[j];
ar[j] := y;
inc(i); {Salto el elemento de la parte inferior}
dec(j); {Salto el elemento de la parte superior}
end; {if i <= j}
until i > j; {... hasta que la parte inferior choque con la parte superior}
if l < j then
qs(l,j,ar); {Si la parte inferior no ha sido ordenada la ordeno}
if l < r then
qs(i,r,ar); {Si la parte superior no ha sido ordenada la ordeno}
{... si no hay nada qu‚ ordenar fin de la ordenaci¢n}
end;
begin {quicksort}
qs (10,1,arreglo); {Cambiar el 10 por el número de elementos del array}
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
Imágen de perfil de melanie
Val: 29
Ha disminuido 1 puesto en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

RE:Algoritmo QuickSort

Publicado por melanie (2 intervenciones) el 03/04/2019 02:38:00
hola he intentado poner el programa a correr y me marca error, alguna solución? es para apoyarme en mi proyecto de programacion sobre quicksort, gracias
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: 2
Ha aumentado su posición en 8 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

RE:Algoritmo QuickSort

Publicado por Cesar (1 intervención) el 03/04/2019 02:45:37
No revivan mensajes viejos.

Ese post tiene 13 años.
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