Este concepto se da cuando hay una relación entre las componentes de igual subíndice (misma posición) de un vector y otro.
Ejemplo:
Si tenemos dos vectores de 5 elementos cada uno. En uno se almacenan los nombres de personas en el otro las edades de dichas personas.
Decimos que el vector Nombres es paralelo al vector Edades si en la componente 1 de cada vector se almacena información relacionada a una persona (Juan - 12 años).
Es decir hay una relación entre cada componente de los dos vectores.
Esta relación la conoce únicamente el programador y se hace para facilitar el desarrollo de algoritmos que procesen los datos almacenados en las estructuras de datos.
Si quiero imprimir el nombre y edad de Laura imprimo:
WriteLn (Nombres[5]); WriteLn (Edades[5]);
La cantidad de vectores paralelos pueden ser más de 2.
Nombres - Edades - Sueldos
Desarrollar un programa que permita cargar 5 nombres de personas y sus edades respectivas. Luego de realizar la carga por teclado de todos los datos imprimir los nombres de las personas mayores de edad (mayores o iguales a 21 años).
Con la primera estructura repetitiva hacemos la carga de los nombres y edades de las personas.
Es conveniente realizar la carga en un mismo for, esto debido que al operador le será más fácil cargar el nombre de la persona y seguidamente la edad de la misma. Sería mucho más engorroso realizar la carga de todos los nombres y luego de todas las edades teniendo en cuenta que hay una relación entre cada componente de los vectores.
Cuando imprimimos analizamos cada componente del vector Edades y si verificamos que si su contenido es mayor o igual a 21 imprimimos dicha componente que está en la misma posición (f) en el vector paralelo Nombres.
program Proyecto65; {$APPTYPE CONSOLE} {$R *.res} type TNombres = array[1..5] of String; TEdades = array[1..5] of Integer; var Nombres: TNombres; Edades: TEdades; f: Integer; begin for f:=1 to 5 do begin Write('Ingrese Nombre:'); ReadLn(Nombres[f]); Write('Ingrese Edad:'); ReadLn(Edades[f]); WriteLn; end; WriteLn('Personas Mayores de Edad'); WriteLn('-------- ------- -- ----'); for f:=1 to 5 do begin if Edades[f] >= 21 then begin WriteLn(Nombres[f]); end; end; ReadLn; end.
El WriteLn vacío dentro del primer for tiene por objetivo dejar una línea en blanco en pantalla para una carga de datos más ordenada (es opcional el WriteLn).
Debemos declarar dos tipos de datos distintos TNombres y TEdades porque a pesar que los dos vectores tienen el mismo tamaño son de distinto tipo, uno Integer y otro String.
En el primer for se hace la carga de los 5 nombres y sus respectivas edades. En el segundo for se analiza cada edad para ver si es mayor de edad, en caso de resultar verdadero imprimimos la componente del vector Nombres de la misma posición de Edades[f].
program Proyecto66; {$APPTYPE CONSOLE} type TProductos = array[1..5] of String; TPrecios = array[1..5] of Double; var Productos: TProductos; Precios: TPrecios; f: Integer; cant: Integer; begin for f:=1 to 5 do begin Write('Ingrese el nombre del producto:'); ReadLn(productos[f]); Write('Ingrese el precio del producto:'); ReadLn(precios[f]); end; cant := 0; for f:=2 to 5 do begin if productos[f] > productos[1] then begin cant := cant + 1; end; end; WriteLn('Cantidad de productos con un precio mayor al primero:', cant); ReadLn; end. program Proyecto67; {$APPTYPE CONSOLE} type TNombres = array[1..5] of String; TNotas = array[1..5] of Integer; var Nombres: TNombres; Notas: TNotas; f: Integer; cant: Integer; begin for f:=1 to 5 do begin Write('Ingrese nombre del alumno:'); ReadLn(Nombres[f]); Write('Ingrese su nota:'); ReadLn(Notas[f]); end; cant := 0; WriteLn('Estado de los alumnos.'); for f:=1 to 5 do begin Write(Nombres[f],' ',Notas[f], ' '); if Notas[f] >= 8 then begin WriteLn('muy bueno'); cant := cant + 1; end else begin if Notas[f] >= 4 then begin WriteLn('bueno'); end else begin WriteLn('Insuficiente'); end; end; end; WriteLn; WriteLn('Cantidad de alumnos muy buenos:', cant); ReadLn; end.