You are on page 1of 9

Profesor Wilson Corts lvarez, Ingeniero y Auditor de Sistemas de Informacin

e-mail: wcortes@utp.edu.co - wcortesalvarez@yahoo.com



UNIVERSIDAD TECNOLOGICA DE PEREIRA
FACULTAD DE INGENIERIA INDUSTRIAL
MATRICES - INFORMATICA III Febrero 17 de 2012


MATRIZ: Es un arreglo que puede contener varias direcciones (filas y columnas), pueden ser:
Bidimensionales, Tridimensionales, Entre otros.

Los elementos que la componen pueden ser de diferente tipo (a nivel columna): numrico, cadena, fecha,
booleano, entre otros (en general se utilizan de tipo numrico). A continuacin se esquematiza una matriz
bidimensional en donde cada elemento tiene una posicin definida (fila, columna) con su respectivo contenido:


Columnas


Filas






* Para la utilizacin de diagonales la matriz debe ser cuadrada, esto es, el nmero de filas igual al nmero de
columnas.

Para referirnos a cada elemento se debe invocar su posicin fila y columna (en su orden), por ejemplo:
- El nmero 6 esta en la posicin 1,1
- El nmero 7 esta en la posicin 2,2
- El nmero 80 esta en la posicin 2,4
- El nmero 9 esta en la posicin 4,3

Tipos de matrices: Rectangular, cuadrada, traspuesta, opuesta, nula, simtrica, antisimtrica, diagonal, escalar,
identidad, triangular, inversa, entre otras.

Operaciones con matrices:
- Suma y Resta de matrices: Las dos matrices (n x m y p x q) deben ser de la misma dimensin, donde n=p y
m=q.
- Producto de un real por una matriz: Se multiplica el escalar por cada elemento y se obtiene una matriz del
mismo orden.
- Producto de matrices: Se debe tener en cuenta que el nmero de columnas de la primera matriz debe ser igual al
nmero de filas de la segunda matriz, la matriz producto corresponde al orden n x q. El elemento que ocupa el
lugar (i, j) en la matriz producto se obtiene sumando los productos de cada elemento de la fila i de la matriz A por
el correspondiente de la columna j de la matriz B.


Ejercicios:

1) Ingresar tres notas parciales para N estudiantes con un porcentaje de 25%, 35% y 40% respectivamente;
calcular y mostrar el promedio de las notas definitivas mayores o iguales a 3 y la cantidad de estudiantes que
perdieron la materia (nota definitiva menor a 3.0).

clc
clear all
matriznotas = 0;
nota1 = 0;
nota2 = 0;
6 100 50 2
1 7 12 80
8 23 16 97
189 15 9 41
Matriz de 4x4 (en este caso la matriz es cuadrada)
Diagonal principal, compuesta por los nmeros 6,7,16 y 41
Diagonal secundaria, compuesta por los nmeros 2, 12, 23 y 189
Profesor Wilson Corts lvarez, Ingeniero y Auditor de Sistemas de Informacin
e-mail: wcortes@utp.edu.co - wcortesalvarez@yahoo.com

nota3 = 0;
ndf = 0;
promedio = 0;
sumadf = 0;
candf = 0;
perdieron = 0;
canalumnos = 0;
canalumnos = input('Cantidad de alumnos: ');
% Llenar la matriz con las 3 notas parciales por alumno
for a = 1 : canalumnos
disp(sprintf('Notas del alumno No.%d', a))
nota1 = input('Primera nota 25%: ');
nota2 = input('Segunda nota 35%: ');
nota3 = input('Tercera nota 40%: ');
% Almacenar en la matriz
matriznotas(a, 1) = nota1;
matriznotas(a, 2) = nota2;
matriznotas(a, 3) = nota3;
end

% Recorrer la matriz, calcular la nota definitiva y verificar si cumple
% para el promedio solicitado.
for a = 1 : canalumnos
ndf = matriznotas(a, 1) * 0.25 + matriznotas(a, 2) * 0.35 + matriznotas(a, 3) * 0.4;
if ndf >= 3
sumadf = sumadf + ndf;
candf = candf + 1;
else
perdieron = perdieron + 1;
end
end
promedio = sumadf / candf;
disp(sprintf('Promedio de las notas definitivas mayores o iguales a tres --> %.2f', promedio))
disp(sprintf('Cantidad de estudiantes que perdieron la materia --> %d', perdieron))
disp('Fin del ejercicio')

2) Disear una matriz cuadrada (n x n) y una vez llena de nmeros, calcular el valor total de la diagonal principal
mostrando su resultado.

3) Disear una matriz cuadrada (n x n) y una vez llena de nmeros, calcular el valor total de la diagonal principal
pero solo para aquellos nmeros cuyo valor sea par y al final mostrar su resultado.

4) Disear una matriz cuadrada (n x n) y una vez llena de nmeros, calcular el valor total de la diagonal
secundaria pero solo para aquellos nmeros impares, y al final mostrar su resultado.


5) Se cuenta con una matriz poblacional de municipios, la cual presenta una dimensin de 10 x 5, donde 10 son
los municipios y 5 son las columnas con la siguiente informacin en su orden:
- Cantidad de nios
- Cantidad de mujeres
- Cantidad de hombres
- Altitud
- Temperatura



Profesor Wilson Corts lvarez, Ingeniero y Auditor de Sistemas de Informacin
e-mail: wcortes@utp.edu.co - wcortesalvarez@yahoo.com

Se requiere determinar: Nmero total de habitantes, promedio poblacional y cantidad de municipos con
temperatura mayor o igual a 20 grados centgrados.

clc
clear all
censomun = 0; % Variable para la matriz de censo del municpio
promhabi = 0; % Variable para calcular el promedio de los habitantes por municipio
numtothabi = 0; % Variable para sumar la poblacin total
tempmayor = 0; % Variable para contar las temperaturas mayores a 15 grados centgrados
disp('Matriz con informacin de municipios')
[censomun] = xlsread('InfoMunicipios.xlsx', 'Poblacion'); % Leer la informacin de los municipios desde Excel
for m = 1 : 10 % Recorrer los 10 municipios
% Acumular la poblacin
numtothabi = numtothabi + (censomun (m,1) + censomun(m,2)+ censomun(m,3));
if censomun(m,5) >= 20
% Determinar si el municipio tiene una temperatura >= a 20 grados centgrados
tempmayor = tempmayor + 1; % De ser afirmativo irlos contando
end
end
promhabi = numtothabi / 10; % Determinar el promedio poblacional de los municipios
disp(sprintf('El total de habitantes es de %d', numtothabi))
disp(sprintf('El promedio de habitantes por municipio es de %12.2f', promhabi))
disp(sprintf('La cantidad de municipios con >= 20 grados centgrados es %d', tempmayor))

6) Crear un libro en Excel y en una hoja ingresar los gastos de la semana para n personas (las filas que quiera
digitar en lo posible no menor a 10). Esta matriz tendr una dimensin de n x 7 (donde el n son las personas y el
7 son los das de la semana de lunes a domingo). Los valores ingresados son numricos en su totalidad, nada de
encabezados con nombres de columnas, nombres de personas o nombres de los das. Se requiere determinar:
- El gasto total
- El mayor valor de gasto en persona (en otras palabras la persona que ms gasto)
- Nombre del da que tuvo mayor gasto (incluido su valor).

a) Solucin algortmica
clc
clear all
gastos = 0; % Variable para almacenar los datos como una matriz
gastotal = 0; % Variable para acumular el gasto total de la semana
mayorgastop = 0; % Variable para almacenar el gasto mayor de persona en la semana
mayorgastod = 0; % Variable para almacenar el gasto mayor del da de la semana
posdia = 0; % Varible para determinar la posicin del dia de mayor gasto
nomdia = ''; % Variable para determinar el nombre del da a partir de la posicin
disp('Matriz con informacin de gastos semanales de personas')
gastos = xlsread('Personas.xlsx', 'Gastos'); % Leer la informacin de los gastos desde Excel
[personas] = size(gastos, 1); % Determinar la cantidad de personas
for p = 1 : personas % Recorrer desde la primera hasta la ltima persona
sumaper = 0; % Dejar la variable en cero para acumular el gasto de la persona actual
for d = 1 : 7 % Recorrer desde el primer hasta el ltimo da de la semana
gastotal = gastotal + gastos(p,d); % Acumular el gasto total (dia a dia)
% Acumular el gasto de la persona actual (7 dias de la semana)
sumaper = sumaper + gastos(p,d);
end
if sumaper > mayorgastop
mayorgastop = sumaper;
end
end


Profesor Wilson Corts lvarez, Ingeniero y Auditor de Sistemas de Informacin
e-mail: wcortes@utp.edu.co - wcortesalvarez@yahoo.com

% Sumar la matriz gasto por columnas, para hallar el acumulado por da
vectordia = sum(gastos);
% Recorrer el vector de gastos acumulados por dia para hallar el mayor
for d = 1 : 7
if vectordia(d) > mayorgastod
mayorgastod = vectordia(d);
posdia = d; % Posicin del dia en el vector
end
end
if posdia == 1
nomdia = 'Lunes';
elseif posdia == 2
nomdia = 'Martes';
elseif posdia == 3
nomdia = 'Mircoles';
elseif posdia == 4
nomdia = 'Jueves';
elseif posdia == 5
nomdia = 'Viernes';
elseif posdia == 6
nomdia = 'Sbado';
else
nomdia = 'Domingo';
end

disp(sprintf('El gasto total de la semana fue de : %14.2f', gastotal))
disp(sprintf('El gasto mas alto de persona fue de : %14.2f', mayorgastop))
disp(sprintf('El da que mas se gasto fue el %s por valor de : %14.2f', nomdia, mayorgastod))
disp('Fin del ejercicio')


b) Solucin directa mediante funciones predeterminadas
clc
clear all
gastos = 0; % Variable para almacenar los datos como una matriz
gastotal = 0; % Variable para acumular el gasto total de la semana
mayorgastop = 0; % Variable para almacenar el gasto mayor de persona en la semana
mayorgastod = 0; % Variable para almacenar el gasto mayor del da de la semana
posdia = 0; % Varible para determinar la posicin del dia de mayor gasto
nomdia = ''; % Variable para determinar el nombre del da a partir de la posicin
disp('Matriz con informacin de gastos semanales de personas')
gastos = xlsread('Personas.xlsx', 'Gastos'); % Leer la informacin de los gastos desde Excel
gastotal = sum(sum(gastos)); % Totalizar el gasto de la semana
mayorgastop = max(sum(gastos, 2)); % Suma la matriz por filas (personas) y extrae el mximo valor
[mayorgastod, posdia] = max(sum(gastos, 1)); % Suma la matriz por columnas (das) y extrae el mximo valor
if posdia == 1
nomdia = 'Lunes';
elseif posdia == 2
nomdia = 'Martes';
elseif posdia == 3
nomdia = 'Mircoles';
elseif posdia == 4
nomdia = 'Jueves';
elseif posdia == 5
nomdia = 'Viernes';
elseif posdia == 6
nomdia = 'Sbado';
Profesor Wilson Corts lvarez, Ingeniero y Auditor de Sistemas de Informacin
e-mail: wcortes@utp.edu.co - wcortesalvarez@yahoo.com

else
nomdia = 'Domingo';
end

disp(sprintf('El gasto total de la semana fue de : %14.2f', gastotal))
disp(sprintf('El gasto mas alto de persona fue de : %14.2f', mayorgastop))
disp(sprintf('El da que mas se gasto fue el %s por valor de : %14.2f', nomdia, mayorgastod))
disp('Fin del ejercicio')

7) Una empresa cuenta con una matriz de ventas (leer desde libro de Excel primera hoja) para el segundo
semestre del ao, la cual presenta las siguientes columnas en su orden:
- Documento del vendedor
- Ventas mes de julio
- Ventas mes de agosto
- Ventas mes de septiembre
- Ventas mes de octubre
- Ventas mes de noviembre
- Ventas mes de diciembre

Se requiere determinar:
a) Valor total de las comisiones pagadas al 5%
b) Valor total de las comisiones pagadas al 2%
c) Documento y valor de las ventas del semestre del vendedor que menos ventas realizo.

Para las dos primeras respuestas, tenga en cuenta:

- Se paga comisin del 5% siempre y cuando las ventas del mes en curso hayan sido superiores a 5.000.000
millones.

- Se paga comisin del 2% siempre y cuando las ventas del mes en curso hayan sido entre el rango de 2.000.000 y
5.000.000 millones.

clc
clear all
ventas = 0; % Variable para almacenar la matriz de ventas
tcomis5 = 0; % Variable para acumular las comisiones al 5%
tcomis2 = 0; % Variable para acumular las comisiones al 2%
documento = 0; % Variable para almacenar el documento del vendedor con menos venta
ventamenor = 0; % Variable de referencia para almacenar el valor menor de venta en vendedor
vendedores = 0; % Variable para determinar la cantidad de vendedores (filas de la matriz)
disp('Matriz con informacin de ventas del segundo semestre de los vendedores')
ventas = xlsread('Empresa.xlsx', 'Vendedores'); % Leer el archivo desde Excel
vendedores = size(ventas, 1); % Determinar las filas de la matriz (cantidad de vendedores)
for v=1:vendedores % Se recorre desde el primer vendedor hasta el ltimo
ventasvendedor = 0; % Se inicia las ventas del vendedor en cero
for m=2:7 % Se recorre desde el mes de Julio hasta Diciembre
if ventas(v, m) > 5000000 % Se evala si el mes tiene ventas superiores a 500.000 pesos
tcomis5 = tcomis5 + (ventas(v, m) * 0.05); % Se clcula la comisin al 5%
end
% Se evala si el mes tiene ventas entre 2.000.000 y 500.000 pesos
if ventas(v, m) >= 2000000 & ventas(v, m) <= 5000000
tcomis2 = tcomis2 + (ventas(v, m) * 0.02); % Se clcula la comisin al 2%
end
ventasvendedor = ventasvendedor + ventas(v, m); % Se acumulan las ventas por mes del vendedor
end
if v == 1 % Si es el primer vendedor entonces es el de menor venta
ventamenor = ventasvendedor;
Profesor Wilson Corts lvarez, Ingeniero y Auditor de Sistemas de Informacin
e-mail: wcortes@utp.edu.co - wcortesalvarez@yahoo.com

documento = ventas(v, 1);
elseif ventasvendedor < ventamenor % Se compara la venta del siguiente vendedor con la referencia menor
ventamenor = ventasvendedor;
documento = ventas(v, 1);
end
end
disp(sprintf('El valor total de las comisiones pagadas al 0.05 es: %f', tcomis5));
disp(sprintf('El valor total de las comisiones pagadas al 0.02 es: %f', tcomis2));
disp(sprintf('El documento del vendedor que menos vendio es %f con una venta de : %f', documento,
ventamenor));
disp('Fin del ejercicio')

8) En una matriz (leerla desde Excel) se tiene la informacin para la liquidacin de una nmina mensual para n
empleados, en donde el orden de sus columnas es la siguiente:
Cdigo
Sueldo
Das
Bonificacin
Descuentos

El total a pagar se debe deducir de la siguiente manera:
(Sueldo/30)*Dias + Bonificacion Descuentos Salud

Nota: El valor de salud se calcula del 4% del (Sueldo/30)*Dias.

Calcular y mostrar al final:
- Total a pagar por todos los empleados
- Total de la bonificacin
- Total Descuentos
- Total Salud

clc
clear all
nomina = 0; % Variable para almacenar la matriz de nmina mensual
empleados = 0; % Variable para determinar la cantidad de empleados (filas de la matriz)
salud = 0; % Variable para calcular el valor de salud a pagar por parte de cada empleado
totalpagar = 0; % Variable para acumular el valor pagado a los empleados
totalboni = 0; % Variable para acumular el valor de las bonificaciones de los empleados
totaldesc = 0; % Variable para acumular el valor de los descuentos de los empleados
totalsalud = 0; % Variable para acumular el valor de la salud descontada a los empleados
disp('Matriz con informacin de nmina mensual de empleados')
nomina = xlsread('Nomina.xlsx', 'Liquidacion'); % Leer el archivo desde Excel
empleados = size(nomina, 1); % Determinar la cantidad de empleados a procesar
for e = 1 : empleados % Recorrer desde el primer empleado hasta el ltimo
salud = ((nomina(e,2)/30)*nomina(e,3)) * 0.04; % Liquidar la salud
totalpagar = totalpagar + (((nomina(e,2)/30)*nomina(e,3))+ nomina(e,4) - nomina(e,5) - salud);
totalboni = totalboni + nomina(e,4); % Acumular la bonificacin
totaldesc = totaldesc + nomina(e,5); % Acumular los descuentos
totalsalud = totalsalud + salud; % Acumular la salud calculada en la variable salud
end
disp(sprintf('Valor total a pagar de la nmina mensual: %14.2f', totalpagar));
disp(sprintf('Valor total de la bonificaciones pagadas: %14.2f', totalboni));
disp(sprintf('Valor total de los descuentos otorgados: %14.2f', totaldesc));
disp(sprintf('Valor total de la salud descontada: %14.2f', totalsalud));
disp('Fin del ejercicio')


Profesor Wilson Corts lvarez, Ingeniero y Auditor de Sistemas de Informacin
e-mail: wcortes@utp.edu.co - wcortesalvarez@yahoo.com

9) Un campeonato de ftbol presenta informacin para 8 equipos en una matriz con datos de las finales, dicha
matriz esta conformada por 4 columnas con la siguiente informacin (en su orden):

- Cdigo del equipo
- Cantidad de partidos ganados
- Cantidad de partidos empatados
- Cantidad de partidos perdidos.

Se requiere determinar:
- Cdigo del equipo con mayor puntaje
- Promedio de los puntos
- Cantidad de equipos cuya diferencia entre partidos ganados y empatados sea mayor a 3.

Nota: Los puntos por equipo se calculan de la siguiente manera:
Partido ganado: 3 puntos
Partido empatado: 1 punto
Partido perdido: 0 puntos.

10) Un campeonato de microftbol presenta informacin para n equipos en una matriz con datos de las finales,
dicha matriz esta conformada por 3 columnas con la siguiente informacin (en su orden):
- Cantidad de partidos ganados
- Cantidad de partidos empatados.
- Cantidad de Partidos perdidos

Se requiere determinar:
- Promedio de los puntos de los partidos empatados
- Puntaje mas bajo
- Cantidad de equipos cuyo nmero de partidos perdidos sea menor o igual a 2

Nota: Los puntos por equipo se calculan de la siguiente manera:
Partido ganado: 2 puntos
Partido empatado: 1 punto
Partido perdido: 0 puntos.

11) Un campeonato de ftbol cinco presenta informacin para 9 equipos en una matriz con datos de las finales,
dicha matriz esta conformada por 4 columnas con la siguiente informacin (en su orden):
- Cantidad de partidos empatados
- Cantidad de partidos perdidos
- Cantidad de partidos ganados
- Goles a favor

Se requiere determinar:
- Mayor nmero de goles a favor
- Cantidad de equipos cuyos partidos empatados se encuentre entre 5 y 10
- Promedio de los puntos de los partidos ganados.

Nota: Los puntos por equipo se calculan de la siguiente manera:
Partido ganado: 4 puntos
Partido empatado: 2 puntos
Partido perdido: 1 puntos.





12) La materia de informtica III cuenta con un grupo de n alumnos, al final del curso para cada estudiante se
tienen 3 notas con un valor porcentual as:
Profesor Wilson Corts lvarez, Ingeniero y Auditor de Sistemas de Informacin
e-mail: wcortes@utp.edu.co - wcortesalvarez@yahoo.com

- Primer parcial 35%
- Segundo parcial 30%
- Tercer parcial 35%

Muestre al final los siguientes resultados:
- Cantidad de estudiantes que pasaron la materia (nota definitiva mayor o igual a 3.0), cantidad de estudiantes
que la perdieron (nota definitiva menor a 2.0) y cantidad de estudiantes que la habilitan (nota definitiva mayor o
igual a 2.0 y menor a 3.0).
- Promedio de la nota definitiva
- La mayor nota definitiva de la materia.

13) Un curso de Ingls avanzado cuenta con un grupo de 25 estudiantes, al final del curso para cada estudiante se
tienen 3 notas con un valor porcentual as:
- Primer parcial 50%
- Segundo parcial 25%
- Talleres 25%

Muestre al final los siguientes resultados:
- La menor nota definitiva de la materia
- Cantidad de estudiantes que pasaron la materia (nota definitiva mayor a 3.0), cantidad de estudiantes que la
perdieron (nota definitiva menor o igual a 2.0) y cantidad de estudiantes que la habilitan (nota definitiva mayor a
2.0 y menor o igual a 3.0).
- Promedio de la nota definitiva superior a 4.

14) En una matriz de 15 x 3, un almacn de Grandes Superficies tiene registrada las ventas, en su orden las
siguientes columnas:
Valor de la venta
Valor impuesto
Descuento

El programa debe determinar y mostrar los siguientes resultados:
- El mayor descuento aplicado
- Valor total de la venta
- Valor total de los impuestos (columna Valor impuesto) cuyo valor sea mayor al 20% del valor de la venta
(columna Valor de la venta). Por ejemplo, se tiene un valor venta por $100 y su valor impuesto es de $21,
aplicara para la sumatoria (sobrepasa el porcentaje estipulado).

15) En una matriz de n x 4, un hipermercado tiene registrada las ventas, en su orden las siguientes columnas:
Cantidad de artculos vendidos
Valor de la venta
Valor impuesto
Descuento

El programa debe determinar y mostrar los siguientes resultados:
- Valor total de los impuestos (columna valor impuesto)
- La menor cantidad de artculos vendidos
- Valor total de los descuentos (columna descuento) cuyo valor sea menor al 10% del valor de la venta (columna
Valor de la venta). Por ejemplo, se tiene un valor venta por $100 y su valor descuento es de $9, aplicara para la
sumatoria (no sobrepasa el porcentaje estipulado).

16) Un hotel tiene una distribucin estructural de n pisos por n habitaciones. Se requiere determinar para la
contratacin en temporada alta de personal de seguridad lo siguiente:

- Vigilantes por pisos pares (10% de los huspedes)
- Vigilantes por pisos impares (20% de los huspedes)
- Vigilantes adicionales para puertas de evacuacin (40% de las contratados para pisos pares e impares).

Profesor Wilson Corts lvarez, Ingeniero y Auditor de Sistemas de Informacin
e-mail: wcortes@utp.edu.co - wcortesalvarez@yahoo.com

Tenga en cuenta:
a) No hay vigilantes de huspedes para el primer y ltimo piso
b) La cantidad de vigilantes en pisos pares e impares no puede ser inferior a 1

17) Se cuenta con una matriz de recaudos de impuestos municipales n x 5, en donde el orden de su informacin
por columnas es el siguiente:
- Cdigo contribuyente
- Factura
- Fecha
- Tipo de impuesto (1, 2, 3 4)
- Valor

Se requiere determinar al final:
a) Suma total de los recaudos por cada tipo impuesto
b) Menor valor de los tipos de impuesto
c) Nmero de factura con mayor valor del recaudo
d) Promedio del valor del recaudo

18) En una matriz de n x 4 se tiene la informacin para la liquidacin de una nmina mensual para n empleados,
en donde el orden de sus columnas es la siguiente:
Cdigo
Sueldo
Das trabajados en el mes
Alimentacin

El total a pagar se debe deducir de la siguiente manera:
(Sueldo/30)* Dias + Prima Alimentacion Salud - Pension

Nota:
- El valor de salud y pensin se calcula del 4% del (Sueldo/30)*Dias
- La Prima extralegal corresponde al 70% del Sueldo siempre y cuando haya laborado los 30 das de la
semana.

Determinar al final como resultados:
- Total a pagar por todos los empleados
- Cantidad de empleados que obtuvieron la prima extralegal
- Total Prima extralegal
- Total de Salud ms Pensin

19) Teniendo como referencia 2 matrices, efecte algortmicamente su mulplicacin generando con este proceso
una tercera matriz. Tenga en cuenta que para multiplicar 2 matrices se debe cumplir con el requerimiento que las
columnas de la primera sean iguales a las filas de la segunda.

20) Genere algortmicamente la matriz identidad de una matriz cualquiera n x n

You might also like