Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROGRAMACION I
UNIDAD 6 (PARTE 2)
MATRICES
ARRAYS BIDIMENSIONALES
Hasta ahora toda la informacin procesada se manipulaba con una sola columna o lista de
entrada, el llamado vector o array de una dimensin. Sin embargo, en numerosas ocasiones
es necesario trabajar con tablas que tengan diferentes columnas. Por ejemplo la siguiente
tabla:
Un sistema de estructurar los datos podra ser con cuatro arrays paralelos. Sin embargo
puede usarse un array de dos dimensiones que suele ser un mtodo ms eficiente
generalmente. En este caso se puede usar un array e dos dimensiones (dos subndices),
una dimensin para las filas (horizontales) y otra para las columnas (verticales).
Un array bidimensional (tabla o matriz) es un array con dos ndices, al igual que los vectores
que deben ser ordinales o tipo subrango.
Para localizar o almacenar un valor en el array se deben especificar dos posiciones (dos
subndices), uno para la fila y otro para la columna. Los elementos se referencian con el
formato:
T [3, 4]
PROGRAMACION I
Se debe indicar:
Nombre del array.
Tipo del array (recuerde que todos los elementos del array deben ser del mismo tipo.
El rango permitido (primer y ltimo valor posible) por cada subndice.
Ejemplos:
1. Type
Tabla=array[1..25, 1..4] of real;
Var
Grados: Tabla;
2. Type
Matriz=array[1..10, 1..5] of real;
Cuenta=array[1..100, A..Z] of integer;
Dibujo=array[0..4, 0..9] of char;
Var
M:Matriz;
3. Type
Estudiantes=array[1..5, 1..4] of real;
Var
Clase: Estudiantes;
MANIPULACIN DE MATRICES
Asignacin de valores e impresin
program entrada;
type
matriz=array[1..10, 1..10] of byte;
var
mat: matriz;
m, n, i, j: byte;
begin
write(ingrese la cantidad de filas (max.10));
readln(m);
write(ingrese la cantidad de columnas (max.10));
readln(n);
for i:=1 to m do
begin
for j:=1 to n do
begin
write(ingrese un valor de la matriz:);
readln(mat[i, j]);
end;
end;
for i:=1 to m do
begin
for j:=1 to n do
begin
write(mat[i, j]);
end;
writeln;
end;
end.
Lic. Nstor Javier Hurtado
PROGRAMACION I
for j:=1 to 5 do
begin
for i:=1 to 4 do
begin
write(mat[i, j]);
end;
writeln;
end;
Diagonal secundaria
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
if (i + j) = 6 then
write(mat[i, j]);
end;
end;
PROGRAMACION I
Triangular inferior
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
if i >= j then
write(mat[i, j]);
end;
end;
PROGRAMACION I
PROGRAMACION I
PROBLEMA
Un instituto desea controlar los resultados de los alumnos en las diferentes asignaturas de
su carrera de Tcnico Superior en Anlisis de Sistemas. El programa debe leer las notas
obtenidas, almacenarlas en una matriz y visualizar en pantalla el promedio de cada alumno
y el promedio de cada asignatura.
Anlisis del problema:
Se necesita una matriz donde las filas representan a los alumnos y las columnas
representan a las asignaturas, un vector (MediaAlumnos) para almacenar las medias de
cada alumno y un vector (MediaAsignaturas) para almacenar las medias de cada
asignatura.
program ejemplo;
type
matriz=array[1..10, 1..5] of byte;
vector=array[1..10] of real;
var
A: matriz;
MediaAlumnos, MediaAsignatura: vector;
m, n, i, j, suma: byte;
begin
{--- Entrada de la matriz ---}
write('Ingrese la cantidad de alumnos (max.10): ');
readln(m);
write('Ingrese la cantidad de asignaturas (max.5): ');
readln(n);
for i:=1 to m do
begin
for j:=1 to n do
begin
write('Ingrese las notas del alumno ',i,': ');
readln(A[i,j]);
end;
end;
{--- Generacin del vector MediaAlumnos ---}
for i:=1 to m do
begin
Lic. Nstor Javier Hurtado
PROGRAMACION I
suma:=0;
for j:=1 to n do
begin
suma:=suma+A[i,j];
end;
MediaAlumnos[i]:=suma/n;
end;
{--- Generacin del vector MediaAsignaturas ---}
for j:=1 to n do
begin
suma:=0;
for i:=1 to m do
begin
suma:=suma+A[i,j];
end;
MediaAsignatura[j]:=suma/m;
end;
{--- Impresin pantalla de los arrays ---}
writeln; writeln;
for i:=1 to m do
begin
for j:=1 to n do
begin
write(A[i,j]:7);
end;
writeln(MediaAlumnos[i]:10:2);
end;
writeln;
for i:=1 to n do
begin
write(MediaAsignatura[i]:7:2);
end;
writeln; writeln;
readln;
end.