Documentos de Académico
Documentos de Profesional
Documentos de Cultura
07 ArreglosBidimensionales
07 ArreglosBidimensionales
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];
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.
x1 x2 x3 … xj xj+1 … xn-1 xn
Paso 1
Paso 2
Paso 3
… …
Paso n-1
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, j2..n b: Arreglo esclavo
Paso 2: Compara a2 con aj, j3..n Para i1..n-1
Paso 3: Compara a3 con aj, j4..n Para ji+1..n
… Si ai>aj
Paso i: Compara ai con aj, ji+1..n
Intercambia ai con a j
…
Intercambia bi con bj
Paso n-1: Compara an-1 con aj, jn..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.
n
Cij A ik * Bkj
k1
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");
}