Clase 11: Matrices · Creamos una matriz (arreglo multidimensional) de números enteros de la...

Preview:

Citation preview

Clase 11: Matrices

Profesoras de Cátedra:Pía CortésAntonia Larrañaga

¿Quiénes somos?

Pía Cortés

Soy casi Astrónoma, estoy terminando el Magíster en Astronomía en la Universidad de Chile. Estudio planetas extrasolares y programo todo el día. Me gusta leer, las hamburguesas y los gatos.

Antonia Larrañaga

Estudié Ingeniería Eléctrica en la U. de Chile. Actualmente trabajo en The Not Company, donde hacemos comida vegana a partir de inteligencia artificial. Me gusta cocinar, tejer, hacer yoga y los gatos.

Temario de la clase

1. Definición de matrices

2. Ejemplos con matrices

3. Transpuesta de una matriz

Definición de matrices

¿Qué es una matriz?

Las matrices pueden ser descritas como arreglos de arreglos.

Permite almacenar un conjunto de datos de un mismo tipo.

0 1 2 3 4

0 31 22 13 5 45

1 73 51 8 99 2

2 26 14 91 66 82

filas

columnasParece una tabla.

¿Qué es una matriz?

1ra dim.

0 1 2 3 4

0 18 6 32 88 59

1 73 51 8 99 20

2 26 14 91 66 93

2da dim.

3ra dim.

0 1 2 3 4

0 56 47 19 4 45

1 73 51 8 99 12

2 26 14 91 66 76

0 1 2 3 4

0 31 22 13 5 45

1 73 51 8 99 2

2 26 14 91 66 82

Pueden tener más de 2 dimensiones!

0

1

2

Matrices en C++

int poblacion [4][3];

float precios [3][3];

bool disponibles[5][7];

string ciudades [20][5];

Tipo Tamaño

La matriz ciudades puede contener el nombre de

hasta 100 (20*5) ciudades!

filas cols

Matrices en C++

int calendario [5][7][12];

float precios [3][3][7];

Tipo TamañoEn calendario

podemos registrar hasta 420 (5*7*12) valores enteros.

1d 2d 3d

Matrices en C++

float precios[3][3] = {{1.5, 1.7, 1.2},{0.7, 2.3, 3.6}, {1.0, 0.5, 2.1}};

int notas[3][2][4] = {{{4,3,6,5}, {1,7,4,5}}, {{5,6,4,2}, {4,5,4,7}}, {{7,6,4,5}, {6,3,5,4}}};

string nombres [3][4] = {{“Ana”, “Maria”, “Galvez”, “Ruiz”}, {“Karen”, “Sofia”, “Bustos”, “Diaz”}, {“Lucia”, “”, “Gomez”, “Vela”}};

Tipo

Si conoces tus datos, puedes

ponerlos directamente

Operaciones con matrices

Creamos una matriz (arreglo multidimensional) de números enteros de la siguiente forma:

int x [3][2] = {{31, 22},{73, 51},{26, 14}};

0 1

0 31 22

1 73 51

2 26 14

x =

Operaciones con matrices

Podemos acceder al elemento resaltado de la siguiente forma:

cout << x[1][0]; // nombre_matriz[indice_fila][indice_columna]

0 1

0 31 22

1 73 51

2 26 14

x =

Y ¿cómo accedo a un valor

específico?

Ejemplos con matrices

Ingresar elementos en una matriz

int main(){ int numeros[2][3][2]; // capacidad: 2*3*2 = 12 cout << "Ingrese 12 valores: \n"; for (int i = 0; i < 2; ++i){ // limita 1ra dim for (int j = 0; j < 3; ++j){ // limita 2da dim for (int k = 0; k < 2; ++k ){ // limita 3ra dim

cin >> numeros[i][j][k]; } }

} return 0;}

¿Cómo se guardarán los valores 2, 31, 6, 25, 11, 65, 47, 16, 79, 33, 82, 95?

Imprimir una matriz numeros

contiene lo siguiente!0 1 2

0 31 25 65

1 16 33 950 1 2

0 2 6 11

1 47 79 82

0

1

Imprimir una matriz

int main(){ int x[3][2] = {{0,1}, {2,3}, {4,5}}; for (int fil = 0; fil < 3; fil++){ for (int col = 0; col < 2; col++){ cout << "x[" << fil << "][" << col << "]="

<< x[fil][col] << " "; }

cout << endl; } return 0;}

¿Qué se imprime?

Imprimir una matriz

x[0][0]=6 x[0][1]=1x[1][0]=2 x[1][1]=3x[2][0]=4 x[2][1]=0

Imprime el siguiente mensaje!

Multiplicación de matrices

Ejemplo: Multiplicar dos matricesEl programa toma dos matrices y las multipla devolviendo una tercera matrix resultante. La multiplicación de matrices se realiza como se muestra a continuación:

0 1 2

0 4 2 4

1 8 3 1

0 1

0 44 72

1 37 73

0 1

0 3 5

1 2 8

2 7 9

2 filas

3 columnas

3 filas

2 columnas

2 filas

2 columnas

Ejemplo: Multiplicar dos matrices0 1 2

0 4 2 4

1 8 3 1

0 1

0 44 72

1 37 73

0 1

0 3 5

1 2 8

2 7 9

4*3 + 2*2 + 4*7 = 44

4*5 + 2*8 + 4*9 = 72

8*3 + 3*2 + 1*7 = 37

8*5 + 3*8 + 1*9 = 73

#include <iostream>using namespace std;int main(){ // Declaramos las dos matrices matriz a multiplicar y la resultante int a[10][10]; int b[10][10]; int multi[10][10]; // Guardamos los datos cout << "Ingresa los elementos de la matriz a: ";

for (int i = 0; i < 10; i++)

for (int j = 0; j < 10; j++)

cin >> a[i][j];

cout << "Ingresa los elementos de la matriz b: "; for (int i = 0; i < 10; i++)

for (int j = 0; j < 10; j++)

cin >> b[i][j];

// Inicializamos la matriz resultante con ceros

for (int i = 0; i < 10; i++)

for (int j = 0; j < 10; j++)

multi[i][j] = 0;

// Realizamos la multiplicación

for(i = 0; i < 10; ++i)

for(j = 0; j < 10; ++j)

for(k = 0; k < 10; ++k) {

mult[i][j] += a[i][k] * b[k][j];}

cout << "La multiplicación entre ambas es : \n ";

for (int i = 0; i < 10; i++)

for (int j = 0; j< 10; j++)

cout << multi[i][j] << " ";

cout << "\n ";}

return 0;

}

Transpuesta de una matriz

Ejemplo: Encontrar la transpuesta de una matriz El programa toma una matriz e imprime su transpuesta

La transpuesta de una matriz se obtiene cambiando ordenadamente las filas por las columnas.

.

0 1 2 3

0 1 3 9 5

1 4 2 7 10

0 1

0 1 4

1 3 2

2 9 7

3 5 10

#include<iostream>using namespace std;int main (){ int a[10][10], f, c, i, j; cout << "Ingresar número de filas y columnas : "; cin >> f >> c; cout << "Ingresa los elementos de la matriz : "; for (i = 0; i < f; i++) for (j = 0; j < c; j++) cin >> a[i][j]; cout << "La matriz transpuesta es : \n "; for (i = 0; i < c; i++) { for (j = 0; j < f; j++) cout << a[j][i] << " "; cout << "\n "; } return 0;}

Créditos diseños

● Macarena Ibsen, diseñadora gráfica, Branding NiñasPRO.

● Íconos de Freepik usados en estas diapositivas,

licenciados bajo Creative Commons BY 3.0.

https://www.flaticon.com/authors/freepik

¿Preguntas?

Recommended