Está en la página 1de 48

Programacin

Clase 19. Arreglos Bidimensionales


Prof. Gonzalo Mller
gmullerb@mail.com

Facultad de Ingeniera Universidad Central de Venezuela

Clase Anterior
Datos Agrupados del mismo tipo Arreglos Un arreglo esta definido: Nombre. Tipo. Tamao. Arreglos en C: Declaracin: tipo nombre[TAMAO] Manejo: nombre[ndice]
ndice [0, cantidad)
Programacin Prof. Gonzalo Mller Clase 19 GM - 2

Clase Anterior
Manejo de un arreglo:
Tamao Cantidad Tamao. Bucle. Contador < Cantidad

Asignacin = NO realiza la asignacin de todos los valores del arreglo. Arreglos como retorno: NO. Arreglos como parmetros: entrada y retorno. Constantes Simblicas.
Programacin Prof. Gonzalo Mller Clase 19 GM - 3

Arreglos Unidimensionales
Conocidos tambin como vectores.

Declaracin: tipo identificador[TAMAO]


Constante

Programacin Prof. Gonzalo Mller Clase 19 GM - 4

Arreglos Bidimensionales
Conocidos tambin como matrices.

Declaracin: tipo identificador[FILAS] [COLUMNAS]


Constante Constante

Programacin Prof. Gonzalo Mller Clase 19 GM - 5

Arreglos Bidimensionales
Ejemplo:
// Matriz de 2 Filas y 9 Columnas float matriz[2][9];

// Matriz de 3 Filas y 3 Columnas float matrizCuadrada[3][3];

Programacin Prof. Gonzalo Mller Clase 19 GM - 6

Arreglos Bidimensionales
Manejo: ndices: Establecen la posicin de un elemento en la matriz.
Puede ser una variable, constante o expresin.
Debe ser tipo entero sin signo.

Su forma de uso:

ndices

identificador[fila] [columna]

Programacin Prof. Gonzalo Mller Clase 19 GM - 7

Arreglos Bidimensionales
Ejemplo:
matriz[0][1]

matriz[1][5]
Programacin Prof. Gonzalo Mller Clase 19 GM - 8

Arreglos Bidimensionales
Ejemplo:
1 Fila matriz[0][]

2 Fila matriz[1][] 1 Columna matriz[][0] 9 Columna matriz[][8]

Programacin Prof. Gonzalo Mller Clase 19 GM - 9

Arreglos Bidimensionales
Tamao real de la Matriz: filas FILAS columnas COLUMNAS

Matriz Real matriz[3][5] Matriz Definida matriz[4][9]


Programacin Prof. Gonzalo Mller Clase 19 GM - 10

Arreglos Bidimensionales
Rango de los ndices: fila [0, filas) columna [0, columnas)
Lmites Inferiores matriz[0][0] matriz[0][4]

matriz[2][0]

matriz[2][4] Lmites Superiores


Programacin Prof. Gonzalo Mller Clase 19 GM - 11

Arreglos Bidimensionales
Bucles: Se necesitaran al menos 2 bucles para manejar un arreglo bidimensional, los cuales estn anidados: 1 Bucle permitir desplazarse de una fila a otra.
Se utilizar un contador como ndice fila para establecer en que fila se encuentra.

Programacin Prof. Gonzalo Mller Clase 19 GM - 12

Arreglos Bidimensionales
Antes del bucle el contador debe ser iniciado en 0.
fila = 0

La condicin para mantenerse en el bucle debe ser:


fila < filas

Programacin Prof. Gonzalo Mller Clase 19 GM - 13

Arreglos Bidimensionales

fila = 0 Mientras (fila < filas) fila = fila + 1 Siguiente Fila 1 Fila

Programacin Prof. Gonzalo Mller Clase 19 GM - 14

Arreglos Bidimensionales
2 Bucle permitir desplazarse de una columna a otra.
Se utilizar un contador como ndice columna para establecer en que columna se encuentra.

Programacin Prof. Gonzalo Mller Clase 19 GM - 15

Arreglos Bidimensionales
Antes del bucle el contador debe ser iniciado en 0.
columna = 0

La condicin para mantenerse en el bucle debe ser:


columna < columnas

Programacin Prof. Gonzalo Mller Clase 19 GM - 16

Arreglos Bidimensionales

columna = 0 Mientras (columna < columnas) columna = columna + 1 Siguiente Columna 1 Columna

Programacin Prof. Gonzalo Mller Clase 19 GM - 17

Arreglos Bidimensionales
Bucles clsico
fila = 0 Mientras (fila < filas) columna = 0 Mientras (columna < columnas) columna = columna + 1 fila = fila + 1
Programacin Prof. Gonzalo Mller Clase 19 GM - 18

Operaciones con elemento matriz[fila] [columna]

Arreglos Bidimensionales
columna = 0 fila = 0 fila = 0 columna = columna + 1

columna = 0 fila = fila + 1 columna = columna + 1

Bucles clsico
Programacin Prof. Gonzalo Mller Clase 19 GM - 19

Arreglos Bidimensionales
Ejemplo:
unsigned short f, c; f = 0; while(f < filas) { c = 0; while(c < columnas) { printf("\nMatriz(%u, matriz[f][c]); c = c + 1; } f = f + 1; }

%u):

%f",

f,

c,

Programacin Prof. Gonzalo Mller Clase 19 GM - 20

Arreglos Bidimensionales
Ejemplo:
unsigned short f, c; f = 0; while(f < filas) { c = 0; while(c < columnas) { printf("\nMatriz(%u, matriz[f][c]); c = c + 1; } f = f + 1; }

%u):

%f",

f,

c,

Programacin Prof. Gonzalo Mller Clase 19 GM - 21

Arreglos Bidimensionales
Ejemplo:
unsigned short f, c; f = 0; while(f < filas) { c = 0; while(c < columnas) { printf("\nMatriz(%u, matriz[f][c]); c = c + 1; } f = f + 1; }

%u):

%f",

f,

c,

Programacin Prof. Gonzalo Mller Clase 19 GM - 22

Arreglos Bidimensionales
Ejemplo:
unsigned short f, c; f = 0; while(f < filas) { c = 0; while(c < columnas) { printf("\nMatriz(%u, matriz[f][c]); c = c + 1; } f = f + 1; }

%u):

%f",

f,

c,

Programacin Prof. Gonzalo Mller Clase 19 GM - 23

Arreglos Bidimensionales
Ejemplo: Construir un programa estructurado en C para leer y escribir una matriz de tamao dado por el usuario.

Fase 1: Diseo y Anlisis: DES DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa estructurado en C.
Programacin Prof. Gonzalo Mller Clase 19 GM - 24

Ejercicio
Construir un programa estructurado en C para: Leer una matriz y mostrar la misma y la transpuesta en la salida.
1,1 2,1 3,1 1,2 2,2 3,2 1,3 2,3 3,3

Fase 1: Diseo y Anlisis: DES DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa estructurado C.
Programacin Prof. Gonzalo Mller Clase 19 GM - 25

Arreglos Bidimensionales
Elementos indispensables en el manejo de una matriz: Tipo. Tamaos: FILAS y COLUMNAS.
Constantes Enteras sin Signo. Debe ser sobredimesionada.

Cantidades: filas y columnas.


filas FILAS, columnas COLUMNAS. Variables Enteras sin Signo. Definen el tamao de la matriz a ocupar.

Bucles.
2 bucles que permiten desplazarse a travs de la matriz.

Contadores: fila y columna.


fila < filas, columna < columnas. Indica el elemento de la matriz a acceder.
Programacin Prof. Gonzalo Mller Clase 19 GM - 26

Arreglos como parmetros


Se debe indicar el tipo y el tamao del arreglo. Declaracin y Definicin
nombre(unsigned tipo cantidad, tipo parmetro1[TAMAO1], ) nombre(unsigned tipo &cantidad, tipo parmetro1[TAMAO1], )
parmetro de entrada parmetro de retorno

Programacin Prof. Gonzalo Mller Clase 19 GM - 27

Arreglos como parmetros


Ejemplo:
Uso de arreglo como parmetro de salida

void leeNotas(, double notas[20]) { scanf(%lf, &notas[0]); scanf(%lf, &notas[1]); Uso de arreglo como } parmetro de entrada double mediaNotas(, double notas[20]) { double media = 0; media = notas[0] + notas[1]; }
Programacin Prof. Gonzalo Mller Clase 19 GM - 28

Arreglos como parmetros


Llamada: Como se trata de un parmetro de salida SIEMPRE se debe utilizar como argumento una variable.
nombre(variable1, )

Ejemplo:

variable arreglo del tipo y tamao del parmetro1

void mediaNotas(, double notas[20]); main() { double notas[20]; Argumento Variable leeNotas(cantidad, notas); Argumento Variable mediaNotas(cantidad, notas); }
Programacin Prof. Gonzalo Mller Clase 19 GM - 29

Arreglos Bidimensional como parmetros


Declaracin y Definicin
nombre(unsigned tipo cantidadFilas, unsigned tipo cantidadColumnas, tipo parmetro1[FILAS] [COLUMNAS], ) parmetro
de entrada

nombre(unsigned tipo &cantidadFilas, unsigned tipo &cantidadColumnas, tipo parmetro1[FILAS] [COLUMNAS], ) parmetro
de retorno

Programacin Prof. Gonzalo Mller Clase 19 GM - 30

Arreglos Bidimensional como parmetros


Llamada:
nombre(,variable1, )
Variable arreglo de mismas Filas y Columnas

Es necesario utilizar 3 parmetros: cantidad de filas, cantidad de columnas y matriz.

Programacin Prof. Gonzalo Mller Clase 19 GM - 31

Arreglos Bidimensional como parmetros


Ejemplo:
void leerMatriz(unsigned short &filas, unsigned short &columnas, float matriz[50][50]); main() { Mismo Tamao unsigned short filas, columnas; float mat[50][50]; // leerMatriz(filas, columnas, mat); escribirMatriz(filas, columnas, mat); }
Programacin Prof. Gonzalo Mller Clase 19 GM - 32

Arreglos Bidimensional como parmetros


Ejemplo: Disear y construir un programa modular en C++ acoplamiento de datos estndar para leer y escribir una matriz de tamao dado por el usuario.

Fase 1: Diseo y Anlisis: DES y DTD DES, DRE DF y LV de Mdulos y TM. DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C++.
Programacin Prof. Gonzalo Mller Clase 19 GM - 33

Ejercicio
Construir un programa modular con acoplamiento de datos estndar en C++ para: a) Transponer una matriz. b) Determinar si dos matrices son iguales o no. c) Realizar el producto de dos matrices. d) Determinar si una matriz es la identidad. Fase 1: Diseo y Anlisis: DES, DTD y UML DES, DRE DF y LV de Mdulos y TM. DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C++.
Programacin Prof. Gonzalo Mller Clase 19 GM - 34

Ejercicio
Construir un programa modular con acoplamiento de datos estndar en C++ para: e) Determinar si una matriz es simtrica. f) Determinar la norma Frobenius de una matriz. g) Intercambiar dos columnas de la matriz. Fase 1: Diseo y Anlisis: DES, DTD y UML DES, DRE DF y LV de Mdulos y TM. DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C++.
Programacin Prof. Gonzalo Mller Clase 19 GM - 35

Ejercicio
Construir un programa modular con acoplamiento de datos estndar en C++ para: h) Desplazar una malla de N vrtices en una direccin dada. Fase 1: Diseo y Anlisis: DES, DTD y UML DES, DRE DF y LV de Mdulos y TM. DRE DF, LV y CF de Bloque Principal. Fase 2: Codificacin: programa modular en C++.

Programacin Prof. Gonzalo Mller Clase 19 GM - 36

Resumen
Arreglo unidimensional: vectores. Arreglo bidimensionales: matrices. Declaracin: tipo identificador[FILAS] [COLUMNAS] Manejo:
identificador[fila] [columna] 1 Bucle permitir desplazarse de una fila a otra. 2 Bucle permitir desplazarse de una columna a otra.

Matrices como parmetros: 3 parmetros.


Mismo Tamao.
Programacin Prof. Gonzalo Mller Clase 19 GM - 37

Lectura Extra

Arreglo Multidimensionales
Conocidos tambin como Arreglos N-dimensionales

Programacin Prof. Gonzalo Mller Clase 19 GM - 38

Arreglos Multidimensionales
Declaracin: tipo nombre[TAMAO1] [TAMAO2] [TAMAON] Ejemplo:
// Arreglo de 4 dimensiones // de 2 x 9 x 5 x 3 double arreglo[2][9][5][3];

Programacin Prof. Gonzalo Mller Clase 19 GM - 39

Arreglos Multidimensionales
Manejo: ndices: Se utilizaran tantos dimensiones tengan el arreglo. ndices como

identificador[ndice1] [ndice2] [ndiceN] Ejemplo:


// Asigna 3 al elemento 0, 5, 4, 1 arreglo[0][5][4][1] = 3.0;
Programacin Prof. Gonzalo Mller Clase 19 GM - 40

Arreglos Multidimensionales
Tamao real del Arreglo: cantidad1 TAMAO1 cantidad2 TAMAO2 cantidadN TAMAON

Programacin Prof. Gonzalo Mller Clase 19 GM - 41

Arreglos Multidimensionales
Rango de los ndices: ndice1 [0, cantidad1 1] ndice2 [0, cantidad2 1] ndiceN [0, cantidadN 1]

Programacin Prof. Gonzalo Mller Clase 19 GM - 42

Arreglos Multidimensionales
Bucles: Se utilizaran tantos bucles anidados como dimensiones tengan el arreglo.
Se utilizaran tantos contadores para ndice como dimensiones tengan el arreglo.

Ejemplo:
double arreglo[2][9][5][3]; 4 Bucles anidados. unsigned short e1, e2, ; 4 Contadores. while(e1 < cantidad1) 4 Cantidades. while(e2 < cantidad2) while(e3 < cantidad3) while(e4 < cantidad4)
Programacin Prof. Gonzalo Mller Clase 19 GM - 43

Arreglos como parmetros


Se debe indicar el tipo y el tamao del arreglo. Declaracin y Definicin
nombre(unsigned tipo cantidad1, unsigned tipo cantidad2, , tipo parmetro1[TAMAO1] [TAMAO2] , )
parmetro de entrada

nombre(unsigned tipo &cantidad1, unsigned tipo &cantidad2, , tipo parmetro1[TAMAO1] parmetro [TAMAO2], )

de retorno

Programacin Prof. Gonzalo Mller Clase 19 GM - 44

Arreglos Multidimensionales
Ejemplo: Disear y construir un programa modular en C++ con acoplamiento de datos que sume N matrices.

Programacin Prof. Gonzalo Mller Clase 19 GM - 45

Resumen
Arreglos Multidimensionales. Arreglo unidimensional: vectores.
Declaracin:

tipo identificador[TAMAO]
Manejo: identificador[ndice]
1 Bucle permitir desplazarse a lo largo del vector. ndice [0, cantidad)

Programacin Prof. Gonzalo Mller Clase 19 GM - 46

Resumen
Arreglo bidimensionales: matrices.
Declaracin:

tipo identificador[FILAS] [COLUMNAS]


Manejo: identificador[fila] [columna]
1 Bucle permitir desplazarse de una fila a otra. fila [0, filas) 2 Bucle permitir desplazarse de una columna a otra. columna [0, columnas)

Programacin Prof. Gonzalo Mller Clase 19 GM - 47

Resumen
Arreglo N-dimensionales.
Declaracin: tipo nombre[TAMAO1] [TAMAO2] [TAMAON] Manejo: identificador[ndice1] [ndice2] [ndiceN]
Tantos bucles anidados como dimensiones tengan el arreglo. Tantos contadores para ndice como dimensiones tengan el arreglo.

Programacin Prof. Gonzalo Mller Clase 19 GM - 48

También podría gustarte