Está en la página 1de 13

UNIVERSIDAD NACIONAL DE INGENIERÍA

Facultad de Ingeniería Civil


Departamento Académico de Ciencias Básicas

VARIABLE SUBINDICADA II
ARREGLO BIDIMENSIONAL
Lenguaje C
Curso : PROGRAMACION DIGITAL
Profesor : Ing. Walter Jesús Montenegro Sono
Correo : wmontenegros@uni.edu.pe
Arreglo Bidimensional
Tiene dos subíndices.
Declaración:
tipo nombre_arreglo[N° filas][N° columnas];
Ejemplo: int x[20][30];

col 0 col 1 col 2 … col 29


   
fila 0  x[0][0] x[0][1] x[0][2] … x[0][29]
fila 1  x[1][0] x[1][1] x[1][2] … x[1][29] 20
… … … … … … filas
fila 19  x[19][0] x[19][1] x[19][2] … x[19][29]

30 columnas
Arreglo Bidimensional

Lectura y Escritura:
scanf("formato",&matriz[fila-ésima][col-ésima]);

printf("formato",matriz[fila-ésima][col-ésima]);

~
Ejemplo:
scanf("%d", &x[i][j]); Leer
xi,j

~
printf("%d", x[i][j]); Escribir
xi,j
APLICACIONES
CON ARREGLOS
METODO BURBUJA
La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo
algoritmo de ordenamiento. Funciona revisando cada elemento de la
lista que va a ser ordenada con el siguiente, intercambiándolos de
posición si están en el orden equivocado.

Es necesario revisar varias veces toda la lista hasta que no se


necesiten más intercambios, lo cual significa que la lista está
ordenada. También es conocido como el método del intercambio
directo. Dado que solo usa comparaciones para operar elementos, se
lo considera un algoritmo de comparación, siendo el más sencillo de
implementar.
Ejemplo 2
Ordenar un arreglo de menor a mayor. Utilizar el
método Burbuja.

x1 x2 x3 … xj xj+1 … xn-1 xn
Paso 1
Paso 2
Paso 3
… …
Paso n-1

Paso 1: Compara xj con xj+1, j1..n-1


Paso 2: Compara xj con xj+1, j1..n-2 Para i1..n-1
Paso 3: Compara xj con xj+1, j1..n-3 Para j1..n-i
… Si xj>xj+1
Paso i: Compara xj con xj+1, j1..n-i
Intercambia xj conx j+1

FinSi
Paso n-1: Compara xj con xj+1, j1..1
Diagrama
PSeInt

Intercambia
xj con xj+1
Codificación C
#include<stdio.h>
int main()
{ int n,i,j,x[100],t;
printf("Ingrese n: "); scanf("%d",&n);
for(i=1;i<=n;i++) {
printf("x%d: ",i); scanf("%d",&x[i]);
}
for(i=1;i<n;i++)
for(j=1;j<=n-i;j++)
if(x[j]>x[j+1]) {
t=x[j]; x[j]=x[j+1]; x[j+1]=t;
}
printf("\nOrdenado de menor a mayor\n");
for(i=1;i<=n;i++) printf("x%d: %d\n",i,x[i]);
system("pause");
}
Ejemplo 3
Dados dos arreglos a y b de n elementos, ordenarlos
de menor a mayor según el arreglo a. Utilizar el
método Burbuja Mejorado.

Paso 1 a1 a2 … ai … aj … an-1 an
Paso 2
Paso 3 …
… …
Paso n-1
a: Arreglo maestro
Paso 1: Compara a1 con aj, j2..n b: Arreglo esclavo
Paso 2: Compara a2 con aj, j3..n Para i1..n-1
Paso 3: Compara a3 con aj, j4..n Para ji+1..n
… Si ai>aj
Paso i: Compara ai con aj, ji+1..n
Intercambia ai con a j

Intercambia bi con bj
Paso n-1: Compara an-1 con aj, jn..n FinSi
Diagrama a: Arreglo maestro
b: Arreglo esclavo
PSeInt

Intercambia
ai con aj

Intercambia
bi con bj
Ejemplo 4
Dadas dos matrices A(m*n) y B(n*p), calcular el
producto C=A*B.

 A11 A12 ... A1n   B11 B12 ... B1 p 


   
 A21 A22 ... A2n   B21 B22 ... B2 p 
*
 ... ... ... ...   ... ... ... ... 
   
 Am1 Am2 ... Amn  m*n  Bn1 Bn2 ... Bnp 
n* p

n
Cij  A ik * Bkj
k1

i 1..m
j  1..p
Diagrama PSeInt
Codificación C
/*Multiplicación de matrices C(m*p)=A(m*n)*B(n*p)*/
#include<stdio.h>
int main()
{ int i,j,k,m,n,p;
float A[50][50],B[50][50],C[50][50];
printf("Ingrese m,n,p: "); scanf("%d,%d,%d",&m,&n,&p);
printf("Ingrese A(%d*%d):\n",m,n);
for(i=1;i<=m;i++) for(j=1;j<=n;j++) scanf("%f",&A[i][j]);
printf("Ingrese B(%d*%d):\n",n,p);
for(i=1;i<=n;i++) for(j=1;j<=p;j++) scanf("%f",&B[i][j]);
printf("Resultado C(%d*%d):\n",m,p);
for(i=1;i<=m;i++) {
for(j=1;j<=p;j++){
C[i][j]=0;
for(k=1;k<=n;k++) C[i][j]=C[i][j]+A[i][k]*B[k][j];
printf("%8.2f",C[i][j]);
}
printf("\n");
}
system("pause");
}

También podría gustarte