You are on page 1of 25

ARREGLOS

BIDIMENSIONALES

Arreglo bidimensional
Es un conjunto de datos homogneo, finito
y ordenado, donde se hace referencia a
cada elemento por medio de dos ndices.
El primero se utiliza para los renglones
(filas) y el segundo para las columnas.

CONCEPTOS BSICOS
Una matriz es un arreglo de 2 dimensiones.
Declaracin:
int notas[6][10]; Array bidimensional de 6 10
enteros (matriz)
float plan[3][2][5];
Array tridimensional de
325 reales (cubo)

MATRICES
Arreglos bi-dimensionales en C
Ejemplo:

_
_
|123|
Matriz M(3,3) = | 4 5 6 |
|789|
En C++:
int M[3][3];

ndice filas
M

M[0][0] = 1;
M[0][1] = 2;
M[0][2] = 3;
M[1][0] = 4;
M[1][1] = 5;
M[1][2] = 6;
M[2][0] = 7;
M[2][1] = 8;
M[2][2] = 9;
cout<<componente:<<M[1][1];

M(0,0)

M(0,1)

M(0,2)

4
5

M(1,1)

6
7
8

M(2,1)

9
ndice columnnas

Pseudocdigo (recorrido x
filas)
Const
M=valor1
N= valor2
Tipo
Array[1..M,1..N] de real:matriz
Var
Matriz:A
Desde i = 1 hasta M hacer
Desde j = 1 hasta N hacer
Escribir (A[i,j])
Fin_desde
Fin_desde

Pseudocdigo (recorrido x
columnas)
El recorrido por columnas se hace de manera
similar, invirtiendo el sentido de los ndices.
Desde j = 1 hasta N hacer
Desde i = 1 hasta M hacer
Escribir (A[i,j])
Fin_desde
Fin_desde

Ejemplo 01
#include <iostream>
using namespace std;
main()
{
int i, k, m, n ;
int A[100][100];
cout<< "ingresar el valor de m:";
cin>> m;
cout<< "ingresar el valor de n:";
cin>> n;
cout<<"Ingresar componentes"<<endl;
for ( i = 1; i <= m; i++ )
{
for ( k = 1; k <= n; k++ )
cin>> A[i][k];
}
cout<<"Mostrar componentes"<<endl;
for ( i = 1; i <= m; i++ )
{
for ( k = 1; k <= n; k++ )
cout<< A[i][k]<<" ";
cout<<endl;
}
return 0;
}

ARREGLOS BIDIMENSIONALES:
OPERACIONES BSICAS CON MATRICES
Acciones

Resultados

ngreso

for(i=o;i<n;i++){
for(j=0;j<n;j++){
cout<<M[<<i<<]<<[<<j<<]:;
cin>>matriz[i][j]; } }

Escritura

for(i=o;i<n;i++){
for(j=0;j<n;j++){
cout<<M[<<i<<]<<[<<j<<]:<<matriz[i
][j];
} }

Suma

Producto
escalar

for(i=o;i<n;i++){
for(j=0;j<n;j++){
c[i][j] = a[i][j] + b[i][j];
for(i=o;i<n;i++){
for(j=0;j<n;j++){
c[i][j] = a[i][j] * numero

MTODOS DE BSQUEDA DE DATOS


EN MATRICES: BSQUEDA
SECUENCIAL

#include <iostream>
using namespace std;
main ()
{
int posf,posc;
int a[50][50],n,i,j,x,f,c;
cout<<"INGRESAR EL NUMERO
DE FILAS DE LA MATRIZ: ";
cin>>f;
cout<<endl;
cout<<"INGRESAR EL NUMERO
DE COLUMNAS DE LA MATRIZ: ";
cin>>c;
cout<<endl;
for(i=0;i<f;i++){
for(j=0;j<c;j++){
cout<<"Ingresar
elemento M["<<i+1<<j+1<<"]: ";
cin>> a[i][j];
cout<<endl;
}
}

cout<<"INGRESAR ELEMENTO A
BUSCAR EN EL ARRAY: ";
cin>>x;
cout<<endl;
for(i=0;i<f;i++){
for(j=0;j<c;j++){
if(a[i][j]==x){
posf=i;
posc=j;
cout<<endl<<"La posicin es:
"<<posf+1<<","<<posc+1<<endl;
}
}
}
cout<<endl<<"El elemento buscado es:
"<<x<<endl;
}

MATRICES
Arreglos bi-dimensionales en C
Usamos la estructura for para acceder los elementos de la matriz
#define DIM1 3
#define DIM2 3

int i, j, k;
int M[DIM1][DIM2] = { 1,2,3,4,5,6,7,8,9}; /*inicializa la matriz M */
k=1;
for( i=0; i<DIM1; i++)
for( j=0; j<DIM2; j++)
{
M[ i ][ j ] = k;
k ++;
}
for( i=0; i<DIM1; i++)
for( j=0; j<DIM2; j++)
cout<<M[ i ][ j ]);

/* se inicializa la matriz M con fors anidados*/

/* se imprime la matriz M */

MATRICES
Arreglos bi-dimensionales en C
Problema: Escriba un programa que lea una matriz cuadrada, la
presente en pantalla, y nos escriba la suma de todos los nmeros que
no estn en la diagonal

#include <iostream>
Using namespace std;
#define FILAS 3
#define COLUM 3
main()
{
/* Declaracion de variables */
int M[FILAS][COLUM] /* ENTRADA se guarda en arreglo de 2 dimensione
int i, j, suma;
/* lectura por filas, la matriz es cuadrada */
for( i=0; i<FILAS; i++)
for( j=0; j<COLUM; j++)
cin>>M[ i ][ j ] ;

MATRICES
Arreglos bi-dimensionales en C
Problema: continuacin
/* escritura por filas, la matriz es cuadrada */
for( i=0; i<FILAS; i++)
{
for( j=0; j<COLUM; j++)
cout<<M[ i ][ j ] ;
cout<<endl;
}
/* calculo de la suma */
suma = 0;
for( i=0; i<FILAS; i++)
/* se imprime la matriz M */
for( j=0; j<COLUM; j++)
if( ! (i==j))
suma += M[i][j];
/* imprime suma */
cout<<la suma es: <<suma;
}

MATRICES
Arreglos multi-dimensionales en C
Declarar un arreglo multidimensional en C:
tipo

nombre-arreglo[dim-1][dim-2][dim-n];

Uso del for para acceder a sus elementos:


int nombre-arreglo[dim-1][dim-2][dim-n];
for( i=0; i<dim-1; i++)
for( j=0; j<dim-2; j++)
.
.
.
for( n=0; n<dim-n; n++)
nombre-arreglo[i][j][n] = 0;

Ejercicio
Leer los datos de una matriz 3 x 4, denominada
Matriz, y mostrar la suma de los datos de cada fila

#include <iostream>
using namespace std;
int main()
{int matriz[3][4];int arreglo[3];int i,j;
//Ingreso de los datos
for (i=0;i<3;i++)
{
for (j=0;j<4;j++) {
cout << "Ingrese el numero entero correspondiente a la posicion ["<<i<<"] ["<<j<<"]: ";
cin >> matriz[i][j]; } }
//Muestra en pantalla la matriz ingresada
cout << "\n La matriz que usted ingreso es: \n";
for (i=0;i<3;i++) {
for (j=0;j<4;j++) {
cout << matriz[i][j]<<" "; }cout << "\n"; }
//Suma los datos de cada fila
for (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 resultados
for (i=0;i<3;i++) { cout << "\n La suma de los datos de la fila "<<i<<" es: " <<
arreglo[i]; }
return 0;}

Ejercicio

Caso para resolver en grupo


El dueo de una cadena de tiendas de artculos
deportivos desea controlar sus ventas por medio de una
computadora . Los datos de entrada son :
a) El numero de la tienda (1 a 10)
b) Un numero que indica el deporte del articulo (1 a 20)
c) El costo del articulo.
Hacer un programa que escriba al final del da lo
siguiente
1. Las ventas totales en el da para cada tienda
2.Las ventas totales para cada uno de los deportes.
3. Las mayor venta de todas las tienda y a que deporte
pertenece.

EJERCICIO
#include <iostream>
using namespace std;
void CargarMat();
int SumaFilaPar(int mat[ ][3]);
int mat [4][3],f,c; //Declaracin de variables globales
main()
{
CargarMat();
cout<<"La sumatoria de las filas pares es: "<<SumaFilaPar(mat);
}

Implementar las funciones


CargarMat y SumaFilaPar

#include <iostream>
using namespace std;
void CargarMat();
int SumaFilaPar(int mat[][3]);
int mat [4][3],f,c; //Declaracin de variables globales
main(){
CargarMat();
cout<<"La sumatoria de las filas pares es: "<<SumaFilaPar(mat);
}
void CargarMat(){
cout<<"Ingrese los componentes enteros de la matriz: ";
for(f=0;f<4;f++){
for(c=0;c<3;c++){
cin>>mat[f][c];
}
}
}
int SumaFilaPar(int mat[][3]){
int suma=0;
for(f=0;f<4;f=f+2){
for(c=0;c<3;c++){
suma=suma+mat[f][c];
}
}
return (suma);
}

CADENAS, como arreglos de caracteres


A diferencia de otros lenguajes de programacin que emplean un tipo
denominado cadena string para manipular un conjunto de smbolos, en
C, se debe simular mediante un arreglo de caracteres, en donde la
terminacin de la cadena se debe indicar con nulo.
Un nulo se especifica como '\0'. Por lo anterior, cuando se declare un
arreglo de caracteres se debe considerar un carcter adicional a la
cadena ms larga que se vaya a guardar.

char cadena[5];
cadena[1] = H;
cadena[2] = o;
cadena[3] = l;
cadena[4] = a;
cadena[5] = \0;

cadena

H
o
l
a
\0

CADENAS, como arreglos de caracteres


Al inicializar arreglos de caracteres al momento de declararlos
C automticamente asigna el carcter nulo al final de la cadena
char nombre_arr[ 7 ] = "cadena"; char ejemplo[7];
Es equivalente a:
nombre_arr[ 0 ] = c;
nombre_arr[ 1 ] = a;
nombre_arr[ 2 ] = d;
nombre_arr[ 3 ] = e;
nombre_arr[ 4 ] = n;
nombre_arr[ 5 ] = a;
nombre_arr[ 6 ] = \0;
Sin embargo, NO SE PUEDE ASIGNAR una cadena a un arreglo
nombre-arr = ABCD_E; /* ERROR */
ejemplo = nombre-arr;
/* ERROR */
if (opcion == si)
/* ERROR */

You might also like