You are on page 1of 25

ARREGLOS BIDIMENSIONALES O TABLAS

Un array es un conjunto de datos


homogneos, finito y ordenado del mismo
tipo.
Internamente en memoria se reservan M x
N posiciones consecutivas para almacenar
todos los elementos del arreglo.
Se referencia con un nico nombre de
variable seguido de los
subindices
encerrados entre corchetes([]).
El primer del ndice indica la fila y el
segundo indica la columna.
ING. FELIX HUARI

ARREGLOS BIDIMENSIONALES O TABLAS


Un matriz o tabla matemticamente esta
representado de la siguiente forma:

ING. FELIX HUARI

ARREGLOS BIDIMENSIONALES O TABLAS


Podemos observar que la matriz es del
orden m x n.
Sus elementos son a11, a12, a13,, a1n, a21,
a22, a23,, a2n, , am1, am2, am3,, amn.
En programacin, especficamente en c++,
los datos se guardan desde la posicin 0.
Es decir la reservacin de posiciones de
almacenamiento en memoria quedara
como se muestra.

ING. FELIX HUARI

ARREGLOS BIDIMENSIONALES O TABLAS


Matriz A del orden 3 x 4.

Col. 0

Col. 1

Col. 2

Col. 3

Fila 0

Fila 1

Fila 2

ING. FELIX HUARI

ARREGLOS BIDIMENSIONALES O TABLAS


Columnas

Col. 0

Col. 1

Col. 2

Col. 3

Fila 0

Fila 1

Fila 2

Filas

ING. FELIX HUARI

ARREGLOS BIDIMENSIONALES O TABLAS


Col. 0

Col. 1

Col. 2

Col. 3

Fila 0

2.45

Fila 1

Fila 2

Nombre Matriz
Posicin
Fila

A[1][2]

Contenido
Posicin
Columna
ING. FELIX HUARI

ARREGLOS BIDIMENSIONALES O TABLAS


Col. 0

Col. 1

Col. 2

Col. 3

Fila 0

Fila 1

2.45

Fila 2

La matriz tiene 12 casilleros en donde se


almacenaran los datos.

ING. FELIX HUARI

NOMENCLATURA PARA UNA MATRIZ O TABLA


Para referirse a un elemento en particular, se escribe
el nombre de la matriz.
Los subndices debe
corchetes( [ ] ).

estar

encerrado

entre

Los subndices debe ser una constante numrica o


char, puede ser un una expresin o una variable.
Subndices
Subndices
son expresiones
son constantes

A[1][2]

A[ i*2+1 ][i*4]

Nombre de Variable
ING. FELIX HUARI

DECLARACION DE UNA MATRIZ


Para declarar se utiliza la siguiente sintaxis:
<Tipo dato> <Nombre de Variable>[M][N ];

Donde: M y N, indica el tamao de la matriz,


donde estos puede ser una variable o una
constante numrica entero y positivo.
Podemos declarar mas de una matriz del
mismo tipo, para ello se separan con
comas(,).
ING. FELIX HUARI

DECLARACION DE UNA MATRIZ


Para declarar la variable A se procede as:
float A[20][5];
int B[N][6],C[N][M];
A, es una matriz de 100 elementos que
almacenara nmeros reales.
B almacenara N x 6 elementos y C
almacenara N x M elementos, en ambos
casos nmeros enteros.

ING. FELIX HUARI

10

ASIGNACION DE DATOS A UNA MATRIZ


Un arreglo bidimensional se puede inicializar
desde una instruccin de declaracin.
Los valores deben estar delimitados por
llaves y separados por comas.
Adems las llaves se emplean para separar
las filas individuales.
Otra alternativa de asignar datos es a travs
de la instrucciones de entrada que pose el
c++.

ING. FELIX HUARI

11

ASIGNACION DE DATOS A UNA MATRIZ


Asumiendo que se tiene
declaracin de la matriz A

la

siguiente

int A[3][4]={{8,16,9,52},
{3,15,27,6},
{14,25,2,10}
};
Los datos se almacenara en la matriz en el
orden indicado en la lista de datos.

ING. FELIX HUARI

12

ASIGNACION DE DATOS A UNA MATRIZ


La declaracin
inicializacin tal
continuacin:
Col. 0

anterior producir la
como se muestra a

Col. 1

Col. 2

Col. 3

Fila 0

16

52

Fila 1

15

27

Fila 2

14

25

10

ING. FELIX HUARI

13

INICIALIZANDO UNA MATRIZ


#include <iostream>
#define M 4
#define N 3
using namespace std;
//Definicion de funciones
void Inicializar( int x[][N])
{ int i,j,dat[M][N]={{50,10,80}, {45,11,9},
{-5,7,4},
{20,12,5}};
for(i=0;i<M;i++)
for(j=0;j<N;j++)
x[i][j]=dat[i][j];
}
ING. FELIX HUARI

14

INICIALIZANDO UNA MATRIZ


void Print(int x[][N])
{ int i, j;
cout<<"MATRIZ A"<<endl;
for(i=0;i<M;i++)
{ for(j=0;j<N;j++)
cout<<x[i][j]<<"\t";
cout<<endl;
}
}
//Funcion principal
int main()
{ int A[M][N];
Inicializar(A);
Print(A);
}
ING. FELIX HUARI

15

MATRIZ TRINGULAR INFERIOR


// Programa que genera un matriz cuadarada triangular inferior
#include <iostream>
using namespace std;
const int N=20;
// Declarando las funciones
void Lectura(int x[][N],int M)
{ int i,j;cout<<endl;
for(i=0;i<M;i++)
{ for(j=0;j<M;j++)
if(i>=j)
{ cout<<"X["<<i<<"]"<<"["<<j<<"]=";
cin>>x[i][j];
}
else
x[i][j]=0;
}
}
ING. FELIX HUARI

16

MATRIZ TRINGULAR INFERIOR


void Escribir(int x[][N],int M)
{ int i,j;
cout<<endl<<endl<<"Matriz A"<<endl;
for(i=0;i<M;i++)
{for(j=0;j<M;j++)
cout<<x[i][j]<<"\t";
cout<<endl;
}
}

int CantidaDatos()
{ int m; cout<<endl;
cout<<"Cantidad de datos a procesar:";
cin>>m; return m;
}
ING. FELIX HUARI

17

MATRIZ TRINGULAR INFERIOR


// Funcion principal
int main()
{ int A[N][N], num;
num=CantidaDatos();
Lectura(A,num);
Escribir(A,num);
}

ING. FELIX HUARI

18

PROGRAMA DE APLICACION
/*Una empresa comercial tiene 1000 productos que
comercializa, por cada producto se ingresa los siguientes datos:
cdigo, cantidad, costo unitario. La compaa tiene 3
almacenes y adems el precio unitario de venta por producto es
un 40% mas del costo unitario.
Se pide escribir un programa que realice lo siguiente:
a) Lectura de Datos
b) Mostrar los datos ledos y calculados
c) Cual es el producto que tiene mayor existencia y en que
almacn esta ubicado.
d) Determinar y mostrar el total de la inversin y el total de los
ingresos.*/

ING. FELIX HUARI

19

PROGRAMA DE APLICACION
#include <iostream>
using namespace std;
const int N=1000;
//Lectura de datos
void Lectura(int c[],float a[][3],float cv[N][2],int m)
{ register int i,j,k;
for(i=0;i<m;i++)
{ cout<<Procesando datos del producto #:"<<(i+1)<<endl;
cout<<"C["<<i<<"]=";cin>>c[i];
for(j=0;j<3;j++)
{ cout<<"Cantidad en Almacen #:"<<(j+1)<<endl;
cout<<"A["<<i<<"]["<<j<<"]=";cin>>a[i][j];
}
cout<<"Procesando el Costo unitario y precio de venta de producto #:"<<(i+1)<<endl;

cout<<"CV["<<i<<"]["<<0<<"]=";cin>>cv[i][0];
cv[i][1]=1.40*cv[i][0];
}
cout<<endl;
}
ING. FELIX HUARI

20

PROGRAMA DE APLICACION
//Determinando el producto con mayor existencia
void ProductoMayor(int c[],float a[][3],int m,int &cp,float &may,int &al)

{ int i,j,k=0;
for(i=0;i<m;i++)
for(j=0;j<3;j++)
{ if(k==0)
{ cp=c[i];may=a[i][j];
al=j;
}
else if(a[i][j]>may)
{ cp=c[i];may=a[i][j];
al=j;
} k++;
}
}
ING. FELIX HUARI

21

PROGRAMA DE APLICACION
// Determinando el monto total de Inversion e Ingresos
void InversionIngresos(float a[][3],float cv[N][2],int m)
{ register int i,j,k;
float s,ct=0,ti=0;
for(i=0;i<m;i++)
{ s=0;
for(j=0;j<3;j++)
s+=a[i][j];
ct=ct+s*cv[i][0];
ti=ti+s*cv[i][1];
}
cout<<"La inversion total es:"<<ct<<endl;
cout<<"El ingreso total es:"<<ti<<endl;
}
ING. FELIX HUARI

22

PROGRAMA DE APLICACION
// Mostrando los datos
void VerProductos(int c[],float a[][3],float cv[N][2],int m)
{ register int i,j,k;
cout<<\nMOSTRANDO LOS PRODUCTOS"<<endl;
for(i=0;i<m;i++)
{ cout<<c[i]<<"\t";
for(j=0;j<3;j++)
cout<<a[i][j]<<"\t";
cout<<cv[i][0]<<"\t"<<cv[i][1]<<endl;
}
}

ING. FELIX HUARI

23

PROGRAMA DE APLICACION
//Programa principal
int main()
{ int c[N],n,cp,al;
float a[N][3],cv[N][2],may;
cout<<\nNumero de productos a procesar";cin>>n;
Lectura(c,a,cv,n);
VerProductos(c,a,cv,n);
ProductoMayor(c,a,n,cp,may,al);
cout<<"El codigo del producto mayor es:"<<cp<<endl;
cout<<"La mayor cantidad fisica es:"<<may<<endl;
cout<<"Esta en el almacen #:"<<al<<endl;
InversionIngresos(a,cv,n); cout<<end
}

ING. FELIX HUARI

24

PROGRAMA DE APLICACION

ING. FELIX HUARI

25

You might also like