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.