Capitulo Matrices
Capitulo Matrices
Capitulo Matrices
ARRELOS BIDIMENSIONALES
5.1 Concepto General
Un arreglo bidimensional (Tabla o Matriz) es un arreglo con dos ndices, al igual
que los vectores deben ser ordinales o tipo subrango.
Para localizar o almacenar un valor en el arreglo se deben especificar dos
posiciones, uno por fila y otro para la columna.
La matriz es una estructura de datos bsica dentro de los lenguajes de
programacin y conceptualmente son idnticas a sus homnimas matemticas. Por
tanto una matriz es un conjunto de datos de un tamao definido que se encuentran
consecutivos en memoria y en la que es posible el acceso al elemento que deseemos
simplemente con indicar su posicin.
344
34
646
-9
-89
-9
1258
Para acceder a una celda se realiza mediante dos ndices, uno para las filas y otro
para las columnas.
Se desea acceder a la posicin 1,2 se realiza de la siguiente
manera:
Turbo Pascal
Mat [1,2 ] := 20 ;
END;
cont:=0;
FOR i:=1 TO n DO
FOR j:=1 TO n DO
BEGIN
if (max = ma[i,j])then
cont:=cont+1
END;
writeln('El porcentaje de apariciones del maximo es: ',cont*100 div(n*n), '%');
readkey;
END.
valor
En este caso no se debe buscar el mximo solamente; sino tambin identificar sus
posiciones (fila y columna). Se asume que solamente existe un nico mximo
Ejercicio 3.
Cdigo en Turbo Pascal
{ Indicar en que posiciones esta el mximo valor}
PROGRAM ejer3;
USES
crt;
CONST
n = 3;
VAR
ma : array [1..n,1..n] of integer;
i,j,cont,max,sum: integer;
BEGIN
clrscr;
writeln('Insertar valores de la Matriz:');
writeln;
FOR i:=1 TO n DO
FOR j:=1 TO n DO
BEGIN
write('[',i,'][',j, ']: ');
readln(ma[i,j])
END;
writeln;
writeln('La Matriz es:');
writeln;
FOR i:=1 TO n DO
BEGIN
FOR j:=1 TO n DO
write(' ',ma[i,j]);
writeln
END;
max:=ma[1,1];
FOR i:=1 TO n DO
FOR j:=1 TO n DO
BEGIN
if (max < ma[i,j])then
max:=ma[i,j];
END;
writeln;
writeln('El maximo esta en las siguientes posiciones...');
writeln;
FOR i:=1 TO n DO
FOR j:=1 TO n DO
if (max = ma[i,j])then
writeln('[',i,']','[',j,']');
readkey;
END.
END
END;
writeln('El porcentaje de apariciones numeros primos es: ',cont*100 div(n*n), '%');
readkey;
END.
FOR i:=1 TO n DO
sum:=sum+ma[i][i];
writeln;
writeln('La suma de la diagonal principal es: ',sum);
readkey;
END.
writeln
END;
min:=ma[1,1];
FOR i:=1 TO n DO
BEGIN
FOR j:=1 TO n DO
if (ma[i,j]<min)then
min:=ma[i][j]
END;
writeln('El minimo esta en las siguientes posiciones:');
FOR i:=1 TO n DO
BEGIN
FOR j:=1 TO n DO
if (ma[i][j]=min)then
writeln('[',i,']','[',j,']')
END;
readln;
END.
Ejercicios Propuestos
Notas Aclaratorias: