Cuando se tienen vectores paralelos y se ordena uno de ellos hay que tener la precaución de intercambiar los elementos de los vectores paralelos.
Confeccionar un programa que permita cargar los nombres de 5 alumnos y sus notas respectivas. Luego ordenar las notas de mayor a menor. Imprimir las notas y los nombres de los alumnos.

Lo primero es realizar la carga de los dos vectores. Al ser vectores paralelos lo más conveniente es cargar el nombre del alumno y seguidamente su nota.
El ordenamiento al ser de MAYOR a MENOR la condición deberá ser
Notas[f] < Notas[f+1]
debemos hacer que la nota menor se ubique al final del vector (en la última componente).
Otra actividad importante es cuando hacemos el intercambio de componentes debemos hacerlo en los dos vectores para que los nombres de los alumnos queden con las notas respectivas, esto se logra:
auxbotas := Notas[f]; Notas[f] := Notas[f+1]; Notas[f+1] := auxnotas; auxalumnos := Alumnos[f]; Alumnos[f] := Alumnos[f+1]; Alumnos[f+1] := auxalumnos;
Se intercambia las notas y se intercambia los nombres.
La condición es respecto al vector que queremos ordenar, en este ejemplo estamos ordenando las notas de mayor a menor. Si deseamos ordenar alfabéticamente la condición dependerá del vector Alumnos.
program Proyecto73;
{$APPTYPE CONSOLE}
Type
TAlumnos = array[1..5] of String;
TNotas = array[1..5] of Integer;
var
Alumnos: TAlumnos;
Notas: TNotas;
f, k: Integer;
auxnotas: Integer;
auxalumnos: String;
begin
for f:=1 to 5 do
begin
Write('Ingrese nombre del alumno:');
ReadLn(Alumnos[f]);
Write('Ingrese nota:');
ReadLn(Notas[f]);
WriteLn;
end;
for k:=1 to 4 do
begin
for f:=1 to 5-k do
begin
if Notas[f] < Notas[f+1] then
begin
auxnotas := Notas[f];
Notas[f] := Notas[f+1];
Notas[f+1] := auxnotas;
auxalumnos := Alumnos[f];
Alumnos[f] := Alumnos[f+1];
Alumnos[f+1] := auxalumnos;
end;
end;
end;
WriteLn('Ordenado por notas de mayor a menor');
for f:=1 to 5 do
begin
WriteLn(Alumnos[f], ' ', Notas[f]);
end;
ReadLn;
end.
program Proyecto74;
{$APPTYPE CONSOLE}
type
TPaises = array[1..5] of String;
THabitantes = array[1..5] of Integer;
var
Paises: TPaises;
Habitantes: THabitantes;
k, f: Integer;
auxpais: String;
auxhabitante: Integer;
begin
WriteLn('Carga de paises y habitantes');
for f:=1 to 5 do
begin
Write('Ingese el nombre del pais:');
ReadLn(Paises[f]);
Write('Ingrese la cantidad de habitantes:');
ReadLn(Habitantes[f]);
end;
for k:=1 to 4 do
begin
for f:=1 to 5-k do
begin
if paises[f] > paises[f+1] then
begin
auxpais := paises[f];
paises[f] := paises[f+1];
paises[f+1] := auxpais;
auxhabitante := habitantes[f];
habitantes[f] := habitantes[f+1];
habitantes[f+1] := auxhabitante;
end;
end;
end;
WriteLn('Orden alfabético');
for f:=1 to 5 do
begin
WriteLn(paises[f], ' ', habitantes[f]);
end;
WriteLn;
for k:=1 to 4 do
begin
for f:=1 to 5-k do
begin
if habitantes[f] < habitantes[f+1] then
begin
auxpais := paises[f];
paises[f] := paises[f+1];
paises[f+1] := auxpais;
auxhabitante := habitantes[f];
habitantes[f] := habitantes[f+1];
habitantes[f+1] := auxhabitante;
end;
end;
end;
WriteLn('Ordenado por cantidad de habitantes');
for f:=1 to 5 do
begin
WriteLn(paises[f], ' ', habitantes[f]);
end;
ReadLn;
end.