Está en la página 1de 16

Arreglos bidimensionales – Matrices

Es una estructura de datos dispuesta en forma de filas y columnas donde se puede almacenar información de acuerdo al
tipo de datos y al número de filas y de columnas, que se establezca al declarar la matriz.

Ejemplo: Enteros: A[7][7]

1 2 3 4 5 6 7
1

A= 4

7 A[7][7]

Recorrer o leer Por Filas Recorrer o leer Por columnas


Fil, col Fil ,col
1, 1 – 1,2- 1,3- 1,4- 1,5- 1,6- 1, 7 1,1- 2, 1- 3, 1- 4, 1- 5,1- 6, 1- 7,1
2, 1 – 2,2- 2,3- 2,4- 2,5- 2,6- 2, 7 1,2- 2, 2 -3, 2- 4, 2- 5,2- 6, 2- 7,2
3, 1 – 3,2- 3,3- 3,4- 3,5- 3,6- 3, 7 1,3- 2, 3- 3, 3- 4, 3- 5,3- 6, 3- 7,3

7, 1 – 7,2- 7,3- 7,4- 7,5- 7,6- 7, 7 Para col = 1, 7, 1


Para fil =1, 7, 1 Para fil = 1, 7, 1
Para col = 1, 7, 1 Lea A[fil][col]
Lea A[fil][col] FinPara
FinPara Finpara
Finpara

Los subíndices de una matriz pueden ser: Constante entera, Vble entera o expresión aritmética entera

A[I][J]

A[2][3]

A[i+2] [j*i-1]
Leer una matriz por filas Leer una matriz por Columnas
A[N][N] // matriz cuadrada A[N][N]
Para fil =1, N, 1 Para col =1, N, 1
Para col ←1, N, 1 Para fil ←1, N, 1
Lea A[fil][col] Lea A[fil][col]
FinPara FinPara
FinPara FinPara

A[5][4] A[5][4]
Para fil =1, 5, 1 Para col =1, 4, 1
Para col ←1, 4, 1 Para fil ←1, 5, 1
Lea A[fil][col] Lea A[fil][col]
FinPara FinPara
FinPara FinPara

A[N][M] // No es cuadrada A[N][M]


Para fil =1, N, 1 Para col =1, M, 1
Para col ←1, M, 1 Para fil ←1, N, 1
Lea A[fil][col] Lea A[fil][col]
FinPara FinPara
FinPara FinPara

A[5][4] A[5][4]

Para fil =1, 5, 1 Para col =1, 4, 1


Para col ←1, 4, 1 Para fil ←1, 5, 1
Lea A[fil][col] Lea A[fil][col]
FinPara FinPara
FinPara FinPara

fil col col fil


1 1, 2, 3, 4 1 1, 2, 3, 4, 5
2 1, 2, 3, 4 2 1, 2, 3, 4,5
3 1, 2, 3, 4 3 1, 2, 3, 4, 5
4 1, 2, 3, 4 4 1, 2, 3, 4, 5
5 1, 2, 3, 4
Ejercicio No 1

Una agencia de venta de vehículos distribuye 8 modelos diferentes y cuenta con 5 vendedores. Lea una matriz donde se
almacene la cantidad de vehículos vendidos por cada vendedor de cada modelo y responda las siguientes preguntas:

1. Cantidad de automóviles vendidos por cada vendedor


2. Cantidad de automóviles vendidos de cada modelo
3. Cantidad de vehículos vendidos por todos los vendedores y de todos los modelos
4. Cuál es el vendedor que más vehículos vendió
5. Cuál es el modelo que más se vendió

V=
VE N DE DO RES
1 2 3 4 5
M 1 3 0 0 6 2 11
O 2 4 1 1 8 9 23
D 3 5 0 2 0 3 10
E 4 6 1 8 9 2 26
L 5 1 3 4 5 0 13
O 6 2 3 4 1 4 14
S 7 3 5 0 1 0 9
8 1 3 2 0 2 8
25 16 21 30 22
I= filas

J= Columnas

INICIO
Enteros V[8][5], MayorMod, Summod, CualModelo, Sumven,CualVendedor, I, J, TOTAL ←0
Para I ← 1, 8, 1
Para J ← 1, 5, 1
Lea V[I] [J]
FinPara
FinPara
MayorMod ← 0

Para I ← 1, 8, 1
Summod ← 0
Para J ← 1, 5, 1
Summod ← Summod + V[I][J]
FinPara
Escriba “la cantidad de ventas del modelo ”, I_, “Es:”, Summod
Si (Summod > MayorMod)
MayorMod ← Summod
CualModelo ← I
FinSi
TOTAL ← TOTAL + Summod
FinPara
Mayorven ← 0

Para J ← 1, 5, 1
Sumven ← 0
Para I ← 1, 8, 1
Sumven ← Sumven + V[I][J]
FinPara
Escriba “la cantidad de ventas de vendedor ”, __J__, “Es:”, Sumven
Si (Sumven > Mayorven)
Mayorven ← Sumven
CualVendedor ← J
FinSi
FinPara
Escriba TOTAL, CualVendedor, CualModelo

FIN

Ejercicio No. 2

Diagonal Principal

A[N][N]

A11 A12 A13 A14 A15 A16


A21 A22 A23 A24 A25 A26
A31 A32 A33 A34 A35 A36
A41 A42 A43 A44 A45 A46
A51 A52 A53 A54 A55 A56
A61 A62 A63 A64 A65 A66

Producto de los elementos por arriba de la diagonal Principal.

Matriz cuadrada de orden Nx N

12, 13, 14, 15, 16

23, 24, 25,26

34, 35, 36

45,46

5,6

Prod= 1

PARA I= 1, N-1, 1

PARA J= I+1, N, 1

Prod = Prod * A[I][J]

FinPara

FinPara
Sumar los elementos de la diagonal principal

1,1- 2, 2- 3,3- 4,4--………..N,N

I= 1 J=1

I= 2 J=2

I=3 J=3

Para I = 1,N, 1

Sumdig = Sumdig + A[I] [I]

Finpara

Ejercicio No. 3

Intercambiar la Primera fila con la última, la segunda con la penúltima, la tercera con la antepenúltima y así hasta donde
sea posible.

A11 A12 A13 A14 A15 A16 …………….. A1N


A21 A22 A23 A24 A25 A26 A2N
A31 A32 A33 A34 A35 A36
A41 A42 A43 A44 A45 A46
A51 A52 A53 A54 A55 A56
A61 A62 A63 A64 A65 A66
.
AN-1,1 AN-1,2 AN-1,3 AN-1,4 AN-1,5 AN-1,6 AN-1,N
AN1 AN2 AN3 AN4 AN5 AN6 ANN

Para I← 1, N div2 , 1

Para J ← 1, N, 1

Temp ← A[I] [J]

A[I][J] ← A[ N - I +1 ] [J]

A[ N - I +1 ] [J] ← Temp

FinPara

FinPara

Ejercicio No. 4

Dada una matriz cuadrada ya leida, escriba si es simetrica o no?

INICIO
// Solución usando Mientras Que
1 2 3 4 5
I ←1
4 1 81 9 0 -1
SW ← 0
8 2 5 3 15 20 MQ (I <= N-1) y ( SW=0)
9 3 3 12 -1 -1 J ← I +1
0 4 15 -1 3 45 MQ (J<= N) y SW=0)
I= 1, J=2, 3, 4, 5
A12 A21
A13 A31
A14 A41
A15 A51
I=2, J= 3, 4, 5

A23 A32
A24 A42
A25 A52
I=3 J=4, 5
A34 A43
A35 A53
I=4 J=5
A45 A54

El mismo ejercicio resuelto con PARA Anidados.

SW= 0
Para I ← 1, N-1, 1
Para J= I+1, N, 1
SI A[I][J] <> A[J][I]
SW ← 1
J ← N+1
I←N
FinSi
FinPara
FinPara
Si (SW==0)
Escriba “ Simetrica”
Sino
Escriba “ No es simétrica”
FinSi

Ejercicio No. 5 Completar


Inicio 1 2 3 4 5 6 7
Entero Mat[7][7], i, j 1 1 1 1 1 1 1 1
Para i← 1, 7 , 1 2 1 3 5 7 9 11 13
Mat[1 ] [i ] ← 1 3 1 5 13 25 41 65
Mat[i ] [ 1] ← 1 4 1 7 25 63
5 1 9 41
FinPara
6 1 11 65
Para i← 2 , 7 , 1
7 1 13
Para j← i, 7 , 1
Mat[i ] [j ] ←Mat[i][j-1] +
Mat[i-1][j-1]+ Mat[i-1][j] A[3][4] = A[3][3]+ A[2][4] +A[2][3]
Mat[j ] [i ] ← Mat [i][J]
A[4][3] = A[3][4]
FinPara
Finpara Es una matriz simetrica

Ejercicio No. 6.
Para I ← 1, 20, 1
Sum= 0
Para J ← 1, 10, 1
HH
Lea T[I][J]
FINHH (T[I][J] >0)
Sum ← Sum + T[I][J]
FinPara
T[I][11] ← Sum
FinPara

HH
Lea etapa
FINHH (etapa >= 1 y etapa <= 10)
Menor ← 9999
Para I= 1, 20 ,1
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Primero ← I
Fsi
FinPara
Menor ← 9999
Para I= 1, 20 ,1
Si (I <> Primero)
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Segundo ← I
FinSi
Fsi
FinPara
Para I= 1, 20 ,1
Si (I <> Primero y I <> Segundo)
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Tercero ← I
Fsi
FSi
FinPara
Escriba “ Los tres primeros puestos de la etapa”, etapa, “fueron”, Primero, Segundo, Tercero
etapa ← 11
Menor ← 9999
Para I= 1, 20 ,1
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Primero ← I
Fsi
FinPara
Para I= 1, 20 ,1
Si (I <> Primero)
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Segundo ← I
FinSi
Fsi
FinPara
Para I= 1, 20 ,1
Si (I <> Primero y I <> Segundo)
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Tercero ← I
Fsi
FSi
FinPara
Escriba “Los tres primeros puestos del evento fueron”, Primero, Segundo, Tercero
FIN.

El siguiente ejercicio es el mismo anterior utilizando un Ménu

HH

Escriba” 1. Leer la matriz”

Escriba “2. Calcular tiempos totales”

Escriba “3. Los tres primeros puestos de una etapa”

Escriba “4. Los tres primeros puestos del evento”

Escriba “ 5. Terminar”

Escriba “ Seleccione una opción 1-5”

Lea Op

DD Op

1: Para I ← 1, 20, 1
Para J ← 1, 10, 1
HH
Lea T[I][J]
FINHH (T[I][J] >0)

FinPara
FinPara

2: Para I ← 1, 20, 1
Sum ← 0
Para J ← 1, 10, 1
Sum ← Sum + T[I][J]
FinPara
T[I][11] ← Sum
FinPara

3: HH
Lea etapa
FINHH (etapa >= 1 y etapa <= 10)
Menor ← 9999
Para I= 1, 20 ,1
Si (T[I][11] < Menor)
Menor ← T[I][etapa]
Primero ← I
Fsi
FinPara
Menor ← 9999
Para I= 1, 20 ,1
Si (I <> Primero)
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Segundo ← I
FinSi
Fsi
FinPara
Menor ← 9999
Para I= 1, 20 ,1
Si (I <> Primero y I <> Segundo)
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Tercero ← I
Fsi
FSi
FinPara
Escriba “ Los tres primeros puestos de la etapa”, etapa
Escriba Primero, segundo y tercero

4: etapa ← 11
Menor ← 9999
Para I= 1, 20 ,1
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Primero ← I
Fsi
FinPara
Para I= 1, 20 ,1
Si (I <> Primero)
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Segundo ← I
FinSi
Fsi
FinPara
Menor = 9999
Para I= 1, 20 ,1
Si (I <> Primero y I <> Segundo)
Si (T[I][etapa] < Menor)
Menor ← T[I][etapa]
Tercero ← I
Fsi
FSi
FinPara
Escriba “ Los tres primeros puestos del evento”
Escriba Primero, segundo y tercero

5: Escriba “FIN”
FINHH( Op= 5)

Ejercicio No. 7

El Señor Pérez, dueño de la compañía HH&SS requiere de un programa que le permita calcular la nómina mensual de sus
trabajadores. Sus requerimientos son los siguientes:

1. Utilizar un arreglo bidimensional que almacene la siguiente información de los N empleados: cédula de cada
empleado, sueldo básico, valor total horas extras diurnas, valor total horas extras nocturnas, valor total horas
extras dominicales, descuento para salud, descuento para pensión, subsidio de transporte y Sueldo total
mensual.
a. Las horas extras se calculan así:
i. Hora extra diurna: La hora extra diurna tiene un recargo del 25% sobre el valor ordinario de la hora.
ii. Hora extra nocturna: La hora extra nocturna tiene un recargo del 75% sobre el valor de la hora
ordinaria.
iii. Hora extra dominical: La hora extra dominical tiene un recargo del 100% sobre el valor de la hora
ordinaria.
b. Los descuentos se calculan así:
i. Salud: 4% de todo lo devengado por el empleado
ii. Pensión: 4% de todo lo devengado por el empleado
c. Subsidio de Transporte: Equivale a $74.000 y se paga a los trabajadores que devengan hasta dos salarios
mínimos mensuales (incluidas las horas extras) (salario mínimo=$644.350 ( Hace 5 años))

2. Solo se deben leer los siguientes datos: cédula, sueldo básico, número de horas extras diurnas, número de horas
extras nocturnas, número de horas extras dominicales.
3. El programa debe realizar todos los respectivos cálculos y mostrar la nómina mensual de los N empleados de la
compañía.

Ejemplo: Los cálculos del ejemplo son con el salario de $644350=

Datos leídos Datos calculados

horas horas horas Sub


cedula SB Vlr ext diur Vlr ext noct Vlr ext dom Salud Pensión STM
ext diur ext notc ext dom Trans
72536981 750.000 2.0 3.0 0 7.812,5 16.406,25 0 30.968,75 30968,75 74.000 786.281

32569852 1.800.000 0 0 0 0 0 0 72.000 72.000 0 1.656.000

8956234 660.000 4 0 5 13.750 0 27500 28.050 28.050 74.000 719.150

72154895 2.500.000 2 0 0 26.041,66 0 0 101.041,667 101.041,67 0 2.323.958

32669589 650.000 3 4 4 10.156,25 18.958,33 21.666,67 28.031,25 28.031,25 74.000 718.719

=El salario mínimo hoy es :$877.803

INICIO
Reales M [100][12], Vlrhora, Sum, Total←0
Enteros I, J, N
Lea N
Para I←1, N, 1
Para J ← 1, 5, 1
Lea M[I] [j]
FinPara
Vlrhora ← M[I][2]/240
M[I][6] ← M[I][3]*VlrHora*1.25
M[I][7] ← M[I][4]*VlrHora*1.75
M[I][8] ← M[I][5]*VlrHora*2
Sum ← M[I][2]+ M[I][6]+ M[I][7]+ M[I][8]
M[I][9] ← Sum * 0.04
M[I][10] ← M[I][9]
Si (Sum <= 2* 644350 ) ent
M[I][11] ← 74000
Sino
M[I][11] ← 0
FinSi
M[I][12] ←Sum + M[I][11] – M[I][9] – M[I][10]
Total ← Total + M[I][12]
FinPara
Escriba Total
Para I ← 1, n,1
Para J ← 1, 12, 1
Escriba M[I][J]
FinPara
FIN

Ejercicio No. 8

Una matriz se puede usar para representar los costos de los tiquetes que hay entre una lista de N ciudades en Colombia,
donde la posición M[i, j] puede tener: un costo mayor que cero, un cero para representar que no hay costo, o un -1, si
no hay ruta directa. La matriz del ejemplo aquí abajo tiene los costos entre 4 ciudades, donde Bogotá (la columna y fila 1
al mismo tiempo) tiene ruta directa con todas las otras ciudades. Escribe un algoritmo que lea la matriz de costos.
Después reemplaza los -1 por el costo de ir de esa ciudad a la otra pasando por Bogotá. Por último debes decir la ciudad
a la cual es menos costoso en promedio ir que a las otras ciudades.
De/ 1 2 3 4 Ejemplo: en la matriz M[3,2] = -1. Significa que no hay De/Hacia 1 2 3 4
Hacia
1 0 10 200 500
ruta directa de la ciudad 3 a la 2. El nuevo valor de 1 0 100 200 500
0 M[3,2] es 200 + 100 = 300, que es el valor de ir de la 2 100 0 300 200
2 100 0 -1 200 ciudad 3 a la 1 (costo 200) más el costo de ir de la 3 200 300 0 700
3 200 -1 0 -1 ciudad 1 a la 2 (costo 100). La matriz original quedaría 4 500 200 700 0
4 500 20 -1 0 como se muestra a continuación, además que la
0 ciudad con costo promedio menor es la ciudad No. 2.

De/ 1 2 3 4
Hacia
1 0 10 200 500
0
2 100 0 -1 200
3 200 -1 0 -1
4 500 20 -1 0
0

INICIO M[2][3] = M[2][1] + M[1][3]

Para I← 1, 4, 1
Para J ← 1, 4, 1
Lea M[I][J]
Finpara
FinPara
Para I← 1, 4, 1
Para J ← 1, 4, 1
Si (M[I][J] = -1)
M[I][J] ← M[I][1] + M[1][J]
FinSi
FinPara
FinPara
Para I← 1, 4, 1
Para J ← 1, 4, 1
Escriba M[I][J]
Finpara
FinPara
FIN

Ejercicio No. 9 Generar la matriz del triángulo de pascal.

1 2 3 4 5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

Para I= 1, N, 1
Para J = 1, N, 1
Si (I= j) o (J = 1)
A[I][J] = 1
Sino
A[I][J] = A[I-1][j-1] + A[i-1][J]
FinSi
FinPara
FinPara
Ejercicio No 10.

La empresa INGENIERIA S.A.S con el fin de gestionar los proyectos a su cargo decide organizarlos en fases
así: Inicio, Planeación, Ejecución y Cierre. Para llevar a cabo el seguimiento y control de las horas invertidas
en cada proyecto utiliza la matriz HORAS. En esta matriz se encuentran registrados, para cada uno de los N
proyectos que maneja la compañía actualmente, el número de horas invertidas en cada fase del proyecto,

Desarrolle un algoritmo que permita:


a. Calcular el número de horas de cada proyecto, y que dicho valor quede registrado en la última
columna de la matriz.
b. Crear un vector que guarde un indicador de acuerdo al estado del proyecto de la sgte manera
1. Activo en desarrollo
2. Finalizado
3. No ha Iniciado

c. Determinar el proyecto Activo al que se le ha invertido mayor cantidad de horas.

INICIO
Enteros Horas[100][5], Estado[100], Sum, N, I, J, Mayor
Lea N
Para I←1, N, 1
Para J ←1, 4, 1
Lea Horas [I] [j]
Finpara
FinPara

Para I←1, N, 1
Sum ← 0
Para J ←1, 4, 1
Sum ← Sum + Horas [I] [j]
Finpara
Horas [I ][5] ← Sum
FinPara

Para I ← 1, N, 1
Si Horas [I][4] > 0
Estado [I] ← 2
Sino
Si (Horas [I][1] > 0)
Estado[I] ← 1
Sino
Estado[I] ← 3
FinSi
FinSi
FinPara
Mayor ← -9999
Para I← 1, N, 1
Si Estado [I] = 1
Si Horas[I] [5] > Mayor
Mayor ← Horas[I][5]
Proyecto ← I
Fsi
FinSi
FinPara

También podría gustarte