Вы находитесь на странице: 1из 7

Instituto Politcnico Nacional

Arreglos Secretaria Acadmica


Direccin de Educacin Superior
ESIME Culhuacan

bidimensionales M. en C. Lorena Azuara Prez


Ingeniera en Computacin
Fundamentos de Programacin

Prctica 12 Alumno:
Grupo:
Fecha:


Objetivo
Al concluir est prctica el estudiante ser capaz de:

Material y Equipo
Computadora, Compilador C, unidad de almacenamiento (USB).

Introduccin terica
Los arreglos vistos anteriormente se conocen como arreglos unidimensionales (una sola dimensin) y se caracterizan por tener
un solo subndice. Estos arreglos se conocen tambin por el trmino listas.


Concepto y forma general
Los arreglos multidimensionales son aquellos que tienen ms de una dimensin y, en consecuencia, ms de un ndice. Los
arreglos ms usuales son los de dos dimensiones, conocidos tambin por el nombre de tablas o matrices. Sin embargo, es
posible crear arreglos de tantas dimensiones como requieran sus aplicaciones, esto es, tres, cuatro o ms dimensiones. Un
arreglo puede tener ms de una dimensin, de tal manera que forme matrices de dos, tres o an ms dimensiones.

Columnas

0 1 2 3

Renglones
0

1


Figura 12.1 Estructura de un arreglos de dos dimensiones

En el arreglo bidimensional de la Figura 12.1, las filas se etiquetan de 0 a m y las columnas de 0 a n, el nmero de elementos
que tendr el arreglo ser el resultado del producto (m + 1) x (n + l). El sistema de localizar un elemento ser por las
coordenadas representadas por su nmero de fila y su nmero de columna (a , b).






Prctica 12 Arreglos bidimensionales



Arreglos numricos y de caracteres
La sintaxis para la declaracin de un arreglo de dos dimensiones es:
tipo_de_dato nombre_del_arreglo [NmerodeFilas] [NmerodeColumnas];

Algunos ejemplos de declaracin de arreglos bidimensionales son:

char lista[80][30];
int puestos[6][8] ;
int equipos[4] [30];
int matriz[4][2];



Los arreglos bidimensionales se pueden inicializar, al igual que los de una dimensin, cuando se declaran. La inicializacin
consta de una lista de constantes separadas por comas y encerradas entre llaves, como en los siguientes ejemplos:
int tabla[2][3] = {51, 52, 53, 54, 55, 56};
o bien en los formatos mas amigables:
int tabla[2][3]= { {51, 52, 53},
{ 54 , 55, 56}} ;
int tabla[2][3] = {{51, 52, 53}, {54, 55, 56}};

Se puede acceder a los elementos de un arreglo bidimensional de la misma manera que se accede a los elementos de un
arreglo unidimensional, es decir, a travs de sus subndices. La diferencia es que en un arreglo bidimensional hay que
especificar los subndices de las filas y las columnas.

tabla[2][3] = 4.5;
asientos[4][7] = 19;
ventas = tabla[2][5];

Las funciones de entrada o salida se aplican de igual forma a los elementos de un arreglo bidimensional. Por ejemplo,
int tabla[3][4];
float resistencias[4][5];
scanf(%d, &tabla[2][3]);
printf(%d,tabla[1][1]);
scanf(%f, &resistencias[2][4]);


Se puede acceder a los elementos de un arreglo bidimensionales mediante bucles anidados. Su sintaxis es:
int x,y, datos[5][5];
for(x = 0; x < 5; x++)
{
for(y=0; y < 5; y++)
{
scanf(%d, &datos[x][y]);
}
}






M. en C. Lorena Azuara Prez


Prctica 12 Arreglos bidimensionales


Ejemplo:
Escriba un programa que llene una matriz de N x M con datos aleatorios y los imprima.


/*Ejemplo 12.1*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main( )
{
int matriz[10][10], x, y, r, c;
printf(Numero de renglones: ); Numero de renglones: 5
scanf(%d, &r); Numero de columnas: 5
printf(Numero de columnas: );
scanf(%d,&c); 9 4 5 3 1
for(x = 0; x < r; x++)
{
8 1 3 2 1
5 4 3 7 8
for(y= 0; y < c; y++)
{ 3 1 2 6 7
matriz[x][y] = 1 + rand()%9; 1 3 2 6 7
printf(%d , matriz[x][y]);
}
printf(\n);
}
getch();
}



Ejemplo:
Escriba un programa que genere la matriz identidad de tamao N x N.


/*Ejemplo 12.2*/
#include<stdio.h>
#include<conio.h>
void main( )
{ Teclea el tamao de la matriz: 7
int matriz[10][10], x, y, t;

printf(Teclea el tamao de la matriz: );
scanf(%d, &t);
for(x = 0; x < t; x++)
1 0 0 0 0 0 0
0 1 0 0 0 0 0
{
for(y = 0; y < t; y++)
0 0 1 0 0 0 0
0 0 0 1 0 0 0
{
if(x == y)
0 0 0 0 1 0 0
0 0 0 0 0 1 0
else
matriz[x][y] = 1;
0 0 0 0 0 0 1
matriz[x][y] = 0;
printf(%d , matriz[x][y]);
}
printf(\n);
}
getch();
}

M. en C. Lorena Azuara Prez


Prctica 12 Arreglos bidimensionales

Ejemplo:
Programa que realiza la suma de dos matrices de N x N.

/*Ejemplo 12.3*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main( ) printf(Matriz 2\n);
{ for(i = 0; i < t; i++)
int m1[10][10], m2[10][10], suma[10][10], t, {
i, j; for(j = 0; j < t; j++)
printf(Teclea el tamao de la matriz: );
scanf(%d, &t);
{
printf(%d ,m2[i][j]);
for(i = 0; i < t; i++)
{
}
printf(\n);
for(j = 0; j < t; j++)
{
}
printf(Suma\n);
m1[i][j] = 1 + rand()%9;
m2[i][j] = 1 + rand()%9;
for(i = 0; i < t; i++)
{
}
suma[i][j] = m1[i][j] + m2[i][j]; for(j = 0; j < t; j++)
{
}
printf(\nContenido de las matrices\n); }
printf(%d ,suma[i][j]);

printf(Matriz 1\n);
for(i = 0; i < t; i++) }
printf(\n);

{
for(j = 0; j < t; j++) }
getch();

{
printf(%d ,m1[i][j]);

}
printf(\n);
}



Teclea el tamao de la matriz: 4
Contenido de las matrices
Matriz 1
1 2 1 3
1 4 5 6
6 2 1 6
7 4 3 1

Matriz 2
2 3 2 5
5 4 2 1
8 7 6 9
9 5 4 1

Suma
3 5 3 8
6 8 8 7
14 9 7 15
16 9 7 2










M. en C. Lorena Azuara Prez


Prctica 12 Arreglos bidimensionales


Desarrollo

1. Escriba un programa con arreglos bidimensionales de N x M que realice la multiplicacin de matrices.

#include <conio.h>
#include <stdio.h>
void main()
{
int fa,ca,fb,cb,r,c,d;
int ma[10][10],mb[10][10], mc[10][10];
printf("Dame la dimension de la matriz A...\n");
printf("Da el numero de renglones: ");
scanf("%d",&fa);
printf("Da el numero de columnas: ");
scanf("%d",&ca);
printf("Lectura de la Matriz A: \n");
for (r=0 ; r<fa;r++)
for(c=0; c<ca;c++)
{
printf("\n ma[%d,%d]:",r,c);
scanf("%d",&ma[r][c]);};
printf("Dame la dimension de la matriz B...\n");
printf("Da el numero de renglones: ");
scanf("%d",&fb);
printf("Da el numero de columnas: ");
scanf("%d",&cb);
if(ca!fb)
{
printf("\nEL PRODUCTO MATRICIAL NO ES POSIBLE DE REALIZAR\n");
exit(1);
}
printf("Lectura de la Matriz B: \n");
for (r=0 ; r<fb;r++)
for(c=0; c<cb;c++)
{
printf("\n mb[%d,%d]:",r,c);
scanf("%d",&mb[r][c]);};
printf("Multiplicando Matrices...... \n");
for (r=0 ; r<fa;r++)
for(c=0; c<cb;c++)
mc[r][c]=ma[r][c]*mb[r][c];
printf("Resultado: \n");
for (r=0 ; r<fa;r++)
{
for(c=0; c<cb;c++)
printf(" %2d ",mc[r][c]);
printf("\n");
}
printf("Para terminar presiona $");
while((d=getchar())!='$');
}


















M. en C. Lorena Azuara Prez


Prctica 12 Arreglos bidimensionales




2. Escriba un programa que cree la transpuesta de una matriz.


/*Prctica 12.2*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main( )
{
int mat[10][10],r,c,i,j;
printf(Teclea el numero de renglones: );
Teclea el nmero de renglones: 3
scanf(%d,&r);
Teclea el nmero de columnas: 4
printf(Teclea el numero de columnas: );
scanf(%d,&c); MATRIZ ORIGINAL
printf(MATRIZ ORIGINAL\n); 1 4 5 7
for(i = 0; i < r; i++) 2 4 1 5
{
7 6 4 9
for(j = 0; j < c; j++)
{ MATRIZ TRANSPUESTA
mat[i][j] = 1 + rand() % 9; 1 2 7
printf(%d , mat[i][j]); 4 4 6
} 5 1 4
printf(\n);
7 5 9
}
printf(MATRIZ TRANSPUESTA\n);
for(i = 0; i < c; i++)
{
for(j = 0; j < r; j++)
{
printf(%d , mat[j][i]);
}
printf(\n);
}
getch();
}




























M. en C. Lorena Azuara Prez


Prctica 12 Arreglos bidimensionales


3. Escriba un programa que cree un cuadro mgico.

#include<stdio.h>
#include<conio.h>
void main()
{
int mat[10][10],i,j,n, num;
printf("Ingrese el tamao del cuadro: ");
scanf("%d", &n);
if(n%2 == 1)
{
j = (n + 1) / 2;
i = 1;
mat[i][j] = 1;
num = 2;
while(num <= n*n)
{
if((num -1)%n == 0)
{
}
i++; Ingrese el tamao del cuadro: 3
Cuadro mgico
else
{
8 1 6
3 5 7
i = i -1;
j = j +1; 4 9 2

}
if(i == 0)

i = n;
if (j > n)


j=1;
mat[i][j]=num;
num = num +1;
}
printf("Cuadro magico\n");
i=1;
while(i <= n)
{
j = 1;
while (j <= n)
{
printf("%d ",mat[i][j]);
j++;
}
printf("\n");
i++;
}
}
else
printf("Error de tamanio!!!");
getch();
}


Cuestionario
1. Cmo se accede a un solo elemento en un arreglo bidimensional?
2. Cmo se accede a un cadena en un arreglo bidimensional?
3. Por qu no son recomendables los arreglos de ms de dos dimensiones?
4. Describa cules son las ventajas de usar arreglos de dos dimensiones.

Conclusiones


M. en C. Lorena Azuara Prez

Вам также может понравиться