Está en la página 1de 15

ARRAYS BIDIMENSIONALES

Se les denomina tambin tablas o matrices. FORMATO: <tipo_dato> <identificador> [<2dimensin>] [< 1dimensin >];
0 0 1 2 3 4

int A[4][5]; Filas Columnas

1 2 3

filas

columnas
10/22/12 Mg. Ing. Edgar Ruiz Lizama 11

Las operaciones bsicas con los arrays bidimensionales son: 1. Lectura o ingreso, 2. escritura o impresin y 3. asignacin

1. Lectura :
Se utiliza dos bucles, uno para las filas y otro para las columnas. La lectura permite el ingreso de datos que se guardaran en la matriz. El orden maximo para la matriz se defini como: const int N = 100; Ejemplo: Leer datos para la matriz A:

void LeerDatos( int A[][N], int nfilas, int ncol ) { for(i=0; i<nfilas; i++) { for(j=0; j<ncol; j++) cin>>A[i][j]; } }
10/22/12 Mg. Ing. Edgar Ruiz Lizama 22

n 2. Escritura:
Al igual que la lectura tambin se usan bucles. Ejemplo: Escribir los datos almacenados en la matriz A.
void ImprimirDatos(int A[][N], int nfilas, int ncol) { for(int i=0; i<nfilas; i++) { for(int j=0; j<ncol; j++) cout<< A[i][j]<< ; cout<<endl; // siguiente fila } }

10/22/12

Mg. Ing. Edgar Ruiz Lizama

33

3. Asignacin:
Permite almacenar una matriz en otra (siempre que tengan la misma dimensin) Sea: A = 3 2 1 4 3 2 B = int B[2][3]; ? ? ? ? ? ?

int A[2][3]={3,2,1.4,3,2}

Es posible asignar la matriz A a la matriz B; es decir hacer B=A; esto se realiza con el siguiente segmento de cdigo.

void AsignaMatriz(int A[][N], int B[][N], int nfilas, int ncol ) { for(int i=0; i<nfilas; i++) { for(int j=0; j<ncol; j++) B[i][j] = A[i][j]; } }

10/22/12

Mg. Ing. Edgar Ruiz Lizama

44

Ejemplo: Escriba un programa que almacene las notas de 5 alumnos en 4 cursos. Se pide encontrar cual es la mayor nota, cual es el promedio de notas de cada alumno y cual es el promedio de cada curso.

10/22/12

Mg. Ing. Edgar Ruiz Lizama

55

Diseo Top Down del programa

10/22/12

Mg. Ing. Edgar Ruiz Lizama

66

/* Programa para procesar notas de 5 alumnos en 4 cursos*/ #include <iostream> // prototipo de las funciones void lecturaMatriz(int Notas[5][4]); void escribeMatriz(int Notas[5][4]); int mayorNota(int Notas[5][4]); void promAlum(int Notas[5][4]); void promCurso(int Notas[5][4]); using namespace std; int main() //notas.cpp { int Notas[5][4]; int mayor; cout<<"INGRESO DE NOTAS"<<endl; lecturaMatriz(Notas); escribeMatriz(Notas); mayor=mayorNota(Notas); cout<<"\nNota mayor: "<<mayor<<endl; promAlum(Notas); promCurso(Notas); return 0; }

10/22/12

Mg. Ing. Edgar Ruiz Lizama

77

void lecturaMatriz(int Notas[5][4]) { int i,j; for (i=0; i<5; i++) { for (j=0; j<4; j++) { cout<<"Ingrese nota["<<i<<", "<<j<<"]: "; cin>>Notas[i][j]; } } } void escribeMatriz(int Notas[5][4]) { int i,j; for (i=0; i<5; i++) { for (j=0; j<4; j++) cout<<Notas[i][j]<<" "; cout<<endl; } }

10/22/12

Mg. Ing. Edgar Ruiz Lizama

88

int mayorNota(int Notas[5][4]) { int i,j, mayor=-100; for (i=0; i<5; i++) { for (j=0; j<4; j++) { } } return mayor; } void promAlum(int Notas[5][4]) { int i,j, acum; float prom; cout<<endl; if(Notas[i][j]>mayor) mayor = Notas[i][j];

10/22/12

Mg. Ing. Edgar Ruiz Lizama

99

for (i=0; i<5; i++) { acum=0; for (j=0; j<4; j++) acum+=Notas[i][j]; prom=acum/4; cout<<"Promedio alumno "<<i+1<<" "<<prom<<endl; } }

void promCurso(int Notas[5][4]) { int i,j, acum; float prom; cout<<endl; for (j=0; j<4; j++) { acum = 0; for (i = 0; i<5; i++) acum+=Notas[i][j]; prom=acum/5; cout<<"Promedio curso "<<j+1<<" "<<prom<<endl; } }

10/22/12

Mg. Ing. Edgar Ruiz Lizama

1010

EJECUCIN DEL PROGRAMA

10/22/12

Mg. Ing. Edgar Ruiz Lizama

1111

Matriz Simtrica
Escriba un programa que permita probar si una matriz es simtrica o no. Resuelva utilizando una funcin que reciba la matriz cuadrada de orden N y devuelva un valor de verdad acerca si dicha matriz es simtrica o no
/* Averigua si una matriz es o no simterica */ #include <iostream> const int SIZE = 20; enum {FALSE, TRUE}; int simtest(int x[][SIZE],int); void leer(int x[][SIZE],int);

10/22/12

Mg. Ing. Edgar Ruiz Lizama

1212

using namespace std; int main() // simtest { int x[SIZE][SIZE]; int n; cout << "Ingrese orden N de la matriz > "; cin >> n; leer(x,n); cout << (simtest(x,n)? "matriz simetrica" : "matriz no simetrica") << endl; return 0; }

10/22/12

Mg. Ing. Edgar Ruiz Lizama

1313

int simtest(int x[][SIZE],int n) { for(int i = 0; i< n-1;i++) { for(int j = i+1; j< n; j++) if( x[i][j]!=x[j][i]) return FALSE; } return TRUE; } void leer(int x[][SIZE],int n) { for(int i = 0;i < n;i++) for(int j = 0; j<n ; j++) { cout<<"x["<<i<<","<<j<<"] = "; cin>>x[i][j]; } }

10/22/12

Mg. Ing. Edgar Ruiz Lizama

1414

REFERENCIAS
1. Deitel y Deitel, Como programar en C++ 4ta. ed. Editorial Prentice Hall. Mxico, 2008. 2. Savitch Walter, Resolucin de Problemas con C++ 2da. ed. Editorial Prentice Hall, Mxico, 2000. 3. Bronson Gary, C++ para Ingeniera y Ciencias Editorial Thompson S. A. Mxico, 2000 4. Staguaard Andrew, Tcnicas Estructuradas y Orientadas a Objetos: Una introduccin utilizando C++ Editorial Prentice Hall. Mxico, 1998. 5. Ruiz Lizama Edgar, Programacion con C++ 1ra. ed. Fondo Editorial UNMSM. Lima, Per, 2009. ERL/2012.

10/22/12

Mg. Ing. Edgar Ruiz Lizama

1515

También podría gustarte