Your SlideShare is downloading. ×
0
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Arreglos bidimensionales o matrices

43,535

Published on

Published in: Education
5 Comments
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
43,535
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
534
Comments
5
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Una matriz es un vector de vectores, oconjunto de elementos siempre del mismo tipo.
  • 2. Cada elemento es una casilla, con posición:elemento [1:8,a:h]; dependiendo de la fila y columnadonde encuentren.
  • 3. ELEMENTOS DE LA MATRIZPara identificar los elementos de la matriz, se utilizan dossubíndices: El primero, indica la fila donde se ubica. El segundo, indica en qué columna está.Por ejemplo: M[2,3]Se refiere al elemento ubicado en la segunda fila y terceracolumna.
  • 4. LÍMITES DE LOS SUBÍNDICES DE LA MATRIZUn array bidimensional, posee límites: superior,e inferiorpara su número de filas y columnas.De ahí que:B(L1:U1,L2:U2)={B[I,J]}L<-Límite inferior ; U<-límite superiorDonde L1<-I<-U1 L2<-J<-U2Cada elemento B[I,J] es de tipo TEl número de elementos de la fila es B es U2-L2+1 y elnúmero de elementos de la columna B ES U1-L1+1; por elloel número de elementos del array es (U2-L2+1)*( U1-L1+1)
  • 5. DECLARACIÓN DE UNA MATRIZUna matriz se declara usando el siguiente formato: <TIPO> <NOMBREmatriz> [<N>][<M>] ;Por ejemplo: Se quiere declarar una matriz con nombremat, de dimensión 15x4 y que pueda almacenar datos de tipocarácter. char mat [15][4];
  • 6. Por ejemplo, una matriz bidimensional se puede imaginar comouna tabla bidimensional compuesta de elementos, todos ellos deun mismo tipo de datos uniforme.jimmy representa una matriz bidimensional de 3 por 5 elementosde tipo int. La manera de declarar esta matriz en C + + sería: int jimmy [3][5];y, por ejemplo, la manera de hacer referencia al segundo elementovertical y horizontal en el cuarto una expresión sería:jimmy[1][3](Recuerde que los índices comienzan siempre por cero).
  • 7. ASIGNACIÓN DIRECTA DE ELEMENTOS DE UN ARREGLO BIDIMENSIONAL ( Inserción de elementos) <nombre del arreglo> [índice de fila][índice de columna] = valor del elemento;
  • 8. FORMATO DE ASIGNACIÓN DIRECTA A UNARREGLO BIDIMENSIONAL (extracción de elementos)  <identificador variable> =<nombre delarreglo>[índice de fila][índice de columna];
  • 9. Dadas las siguientes definiciones de arreglo bidimensional, dibuje un diagrama de la estructura del arreglo mostrando los índices respectivos de filas y columnas. int voltaje[CORRIENTE][RESISTENCIA]; const int CORRIENTE = 26; const int RESISTENCIA = 1001;Las asignacion directa posibles para la inserción de unvalor eso:voltaje[2][10] = 20;Observe que este valor de voltaje corresponde a un valorde corriente de 2 y un valor de resistencia de 10 cuandose usa la ley de Ohm
  • 10. Asignar datos a elementos de una Matriz los enunciados de asignación directa para extraer elementos son:volts = voltaje[5][100];En este caso se asigna a un identificador variable el valordel elemento almacenado en la posición fila/columnadentro del arreglo.
  • 11. INICILIZACION DE UNA MATRIZEs posible declarar e inicializar un arreglo en una misma vez.Por ejemplo: b[2][2]int b[2][2] = { {1, 2}, {3, 4} };Los valores se agrupan por filas entre corchetes. Por lotanto, 1 y 2 inicializan a b[0][0] y b[0][1] y 3 y 4 inicializan ab[1][0] y b[1][1] Si no hay suficientes inicializadores para una fila determinada, los elementos se inicializan a 0. Por lo tanto, la declaración:int b[2][2] = { {1}, {3, 4} };inicializan a b[0][0] a 1, y b[0][1] a 0, b[1][0] a 3, y b[1][1] a 4.
  • 12. LECTURA Y ESCRITURA DE ELEMENTOS EN ARREGLOS BIDIMENSIONALESEs posible usar enunciados cin para insertar elementosen arreglos bidimensionales y utilizar enunciados coutpara extraer elementos del arreglo, como los siguientesejemplos: cin >> voltaje[5][20]; cout << voltaje[5][20];
  • 13. Ejemplo: Este ejemplo nos presenta el menú , en un restaurante:#include <iostream>using namespace std;#define DIMENSION ((int) (sizeof mst / sizeof mst [0]))struct St { int orden; char* plato; char* desc;} mst [] = { 1, "Entrada", "Sopa juliana", 2, "Segundo", "Filete empanado", 3, "Postre ", "Tarta al Whisky",};int main() { for (int i = 0 ; i < DIMENSION; i++) cout << mst[i].orden << " " << mst[i].plato << " " << mst[i].desc << endl; return 0;}
  • 14. CÓMO RECORRER UNA MATRIZ?Para recorrer una matriz necesitamos dos bucles anidados. Por ejemplo, sise desea recorrer todos los elementos de la matriz A por filas, se escribirándos sentencias for anidadas:for i=1: nfilasA % para cada filafor j=1: ncolsAsentenciasendendTambién es posible recorrer la matriz por columnas:for j=1: ncolsA % para cada columnafor i=1: nfilasAsentenciasendend
  • 15. ALMACENAMIENTO DE ARRAYS ENMEMORIAEl almacenamiento en memoria, está dispuesto ensecuencia contigua de modo que cada acceso debeconvertir la posición dentro del array en una posicióndentro de una línea.
  • 16. Lee los datos de una matriz 3x4 y muestra en pantalla la suma de los datos de cada fila#include <iostream>#include <stdlib.h>#include <conio.h>using namespace std;/*Este programa lee los datos de una matriz 3x4 y muestra en pantallala suma de los datos de cada fila */int main(){int matriz[3][4];int arreglo[3];int i,j;//Ingreso de los datosfor (i=0;i<3;i++) { for (j=0;j<4;j++) {
  • 17. cout << "Ingrese el numero entero correspondiente a la posicion ["<<i<<"] ["<<j<<"]: "; cin >> matriz[i][j]; } }//Muestra en pantalla la matriz ingresadacout << "nLa matriz que usted ingreso es: nn"; for (i=0;i<3;i++) { for (j=0;j<4;j++) { cout << matriz[i][j]<<" "; }cout << "n"; }//Suma los datos de cada filafor (i=0;i<3;i++) { arreglo[i]=0; for (j=0;j<4;j++) { arreglo[i]=arreglo[i]+matriz[i][j]; } }//Muestra en pantalla los resultadosfor (i=0;i<3;i++) { cout << "nLa suma de los datos de la fila "<<i<<" es: " << arreglo[i]; }getch();}
  • 18. Operaciones con matrices:Al igual que en matemática, las operaciones conmatrices, se ejecutan de la siguiente manera:En teoría se hace así (suma):
  • 19. Suma y Resta de Matrices#include <iostream.> #include <stdlib.h> using namespace std; int operacion(int [][100], int [][100], int [][100], int , int , int, int, int); int main() { int n,f,c,r,f1,f2,c1,c2, m1[100][100], m2[100][100], mr[100][100]; cout<<"Presione 1 para Sumar"<<endl<<"Presione 2 para Restar"<<endl<<" Presione otro numero paraSalir"<<endl; cin>>n; while ((n>0) && (n<3)) { f1=0; c1=0; f2=0; c2=0; while ((f1<1) || (f1>101)) { cout<<"Introduce las filas de la matriz 1 [1-100]: "; cin>>f1; } while ((c1<1) || (c1>101)) { cout<<"Introduce las columnas de la matriz 1 [1-100]: "; cin>>c1; } for (f=0; f<=f1; f++) { for (c=0; c<=c1; c++) { cout<<"m1["<<f<<"]["<<c<<"] = "; cin>>m1[f][c]; } }
  • 20. while ((f2<1) || (f2>101)) { cout<<endl<<"Introduce las filas de la matriz 2 [1-100]: "; cin>>f2; } while ((c2<1) || (c2>101)) { cout<<"Introduce las columnas de la matriz 2 [1-100]: "; cin>>c2; } for (f=0; f<=f2; f++) { for (c=0; c<=c2; c++) { cout<<"m2["<<f<<"]["<<c<<"] = "; cin>>m2[f][c]; } }r=operacion(m1,m2,mr,n,f1,f2,c1,c2); if (r==-1) cout<<endl<<"No se pudo realizar la operacion; las matrices no son del mismo tamanio"<<endl; else { for (f=0; f<=f2; f++) { for (c=0; c<=c2; c++) cout<<" "<<mr[f][c]<<" "; cout<<endl; } } cout<<endl<<"1 -- Sumar"<<endl<<"2 -- Restar"<<endl<<"Otro numero -- Salir"<<endl; cin>>n; } cout<<endl<<"Fin de programa..."<<endl; system("PAUSE"); return 0; }
  • 21. int operacion(int m1[][100], int m2[][100], int mr[][100], int n, int f1, int f2,int c1, int c2) { int f,c; if ((f1==f2) && (c1==c2)) //si si se pueden sumar/restar { if (n==1) //suma { for (f=0; f<=f1; f++) { for (c=0; c<=c1; c++) mr[f][c] = m1[f][c] + m2[f][c]; } } else //resta { for (f=0; f<=f1; f++) { for (c=0; c<=c1; c++) mr[f][c] = m1[f][c] - m2[f][c]; } } return 1; } else {return -1;} }

×