clase 11: matrices · creamos una matriz (arreglo multidimensional) de números enteros de la...

28
Clase 11: Matrices Profesoras de Cátedra: Pía Cortés Antonia Larrañaga

Upload: others

Post on 20-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Clase 11: 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

Clase 11: Matrices

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

Page 2: Clase 11: 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

¿Quiénes somos?

Page 3: Clase 11: 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

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.

Page 4: Clase 11: 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

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.

Page 5: Clase 11: 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

Temario de la clase

1. Definición de matrices

2. Ejemplos con matrices

3. Transpuesta de una matriz

Page 6: Clase 11: 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

Definición de matrices

Page 7: Clase 11: 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

¿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.

Page 8: Clase 11: 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

¿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

Page 9: Clase 11: 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

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

Page 10: Clase 11: 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

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

Page 11: Clase 11: 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

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

Page 12: Clase 11: 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

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 =

Page 13: Clase 11: 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

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?

Page 14: Clase 11: 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

Ejemplos con matrices

Page 15: Clase 11: 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

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?

Page 16: Clase 11: 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

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

Page 17: Clase 11: 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

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?

Page 18: Clase 11: 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

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!

Page 19: Clase 11: 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

Multiplicación de matrices

Page 20: Clase 11: 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

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

Page 21: Clase 11: 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

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

Page 22: Clase 11: 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

#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;

Page 23: Clase 11: 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

// 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;

}

Page 24: Clase 11: 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

Transpuesta de una matriz

Page 25: Clase 11: 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

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

Page 26: Clase 11: 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

#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;}

Page 27: Clase 11: 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

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

Page 28: Clase 11: 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

¿Preguntas?