Sei sulla pagina 1di 28

ARREGLOS BIDIMENSIONALES O TABLAS

El objetivo de la presente sesin es:

Como procesar grandes cantidades de datos y


almacenarlo en memoria.
Identificar un arreglo bidimensional.
Declarar un arreglo bidimensional y a la vez almacenar
datos.
Mostrar los datos y hacer operaciones con arreglos.
Arreglos bidimensional como parmetros en una funcin y
ejemplos de aplicacin

ING. FELIX HUARI 1


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 2


ARREGLOS BIDIMENSIONALES O TABLAS
Un matriz o tabla matemticamente esta representado
de la siguiente forma:

ING. FELIX HUARI 3


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 4


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 5


ARREGLOS BIDIMENSIONALES O TABLAS

Columnas

Col. 0 Col. 1 Col. 2 Col. 3

Fila 0

Fila 1

Fila 2

Filas

ING. FELIX HUARI 6


ARREGLOS BIDIMENSIONALES O TABLAS

Col. 0 Col. 1 Col. 2 Col. 3

Fila 0

Fila 1 2.45
Fila 2

A[1][2] Contenido
Nombre Matriz

Posicin Posicin
Fila Columna
ING. FELIX HUARI 7
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 8


NOMENCLATURA PARA UNA MATRIZ O TABLA
Para referirse a un elemento en particular, se escribe el
nombre de la matriz.
Los subndices debe estar encerrado entre corchetes( [ ] ).
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 9
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 10


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 almacenar


nmeros reales.
B almacenara N x 6 elementos y C almacenara N x
M elementos, en ambos casos nmeros enteros.

ING. FELIX HUARI 11


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 posee el c++.

ING. FELIX HUARI 12


ASIGNACION DE DATOS A UNA MATRIZ
Asumiendo que se tiene la siguiente declaracin de la
matriz A

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 13


ASIGNACION DE DATOS A UNA MATRIZ

La declaracin anterior producir la inicializacin tal


como se muestra a continuacin:

Col. 0 Col. 1 Col. 2 Col. 3

Fila 0 8 16 9 52

Fila 1 3 15 27 6

Fila 2 14 25 2 10

ING. FELIX HUARI 14


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 15


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 16


MATRIZ TRINGULAR INFERIOR
// Programa que genera un matriz cuadrada 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 17


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 18
MATRIZ TRINGULAR INFERIOR
// Funcion principal
int main()
{ int A[N][N], num;
num=CantidaDatos();
Lectura(A,num);
Escribir(A,num);
}

ING. FELIX HUARI 19


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 20


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

ING. FELIX HUARI 21


PROGRAMA DE APLICACION

cout<<"Procesando el Costo unitario y precio de venta;


Cout<< 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 22


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 23


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 24
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 25


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 26


PROGRAMA DE APLICACION

ING. FELIX HUARI 27


PROBLEMAS PROPUESTOS
Disear un algoritmo que permita sumar cada una de
las filas y columnas de una matriz de orden cuadrada.
El resultado almacenar en vectores independientes,
luego mostrar el contenido de la matriz y los vectores.
Una matriz cuadrada almacena nmeros
pseudoaleatorios de 4 dgitos, se pide disear un
algoritmo para generar una matriz, finalmente mostrar la
matriz.
Dado un matriz cuadrada (numero par), se pide disear
un algoritmo que permita intercambiar la primera fila con
la ultima, la segunda fila con la penltima y as
sucesivamente, el resultado almacenar en otra matriz.
Finalmente mostrar ambas matrices.

ING. FELIX HUARI 28

Potrebbero piacerti anche