Академический Документы
Профессиональный Документы
Культура Документы
VARIABLE
SUBINDICADA
Arreglo Bidimensional
PROGRAMACION DIGITAL MA713-I 136
Arreglo Bidimensional
Tiene dos subíndices.
Declaración:
tipo nombre_arreglo[N° filas][N° columnas];
Ejemplo: int x[20][30];
30 columnas
PROGRAMACION DIGITAL MA713-I 137
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
PROGRAMACION DIGITAL MA713-I 138
APLICACIONES
CON ARREGLOS
PROGRAMACION DIGITAL MA713-I 139
Aplicación1
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
Diagrama PSeInt
Intercambia
xj con xj+1
PROGRAMACION DIGITAL MA713-I 141
Codificación C
/*Ordenamiento ascendente de n números enteros*/
/*Método de la Burbuja*/
#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]) {//Intercambia x[j] y 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");
}
PROGRAMACION DIGITAL MA713-I 142
Ejecución
Ingrese n: 9
x1: 8
x2: 6
x3: 4
x4: 9
x5: 3
x6: 8
x7: 1
x8: 3
x9: 4
Aplicación2
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 aj
…
Intercambia bi con bj
Paso n-1: Compara an-1 con aj, jn..n FinSi
PROGRAMACION DIGITAL MA713-I 144
Intercambia
ai con aj
Intercambia
bi con bj
PROGRAMACION DIGITAL MA713-I 145
Codificación C
/*Ordenamiento ascendente de dos arreglos a y b de n
elementos. Método de la Burbuja Mejorado*/
#include<stdio.h>
int main()
{ int n,i,j,a[100],b[100],t;
printf("Ingrese n: "); scanf("%d",&n);
printf("Nro a b\n");
for(i=1;i<=n;i++){
printf("%d: ",i); scanf("%d %d",&a[i],&b[i]);
}
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i]>a[j]){//Intercambia a[i] y a[j],b[i] y b[j]
t=a[i]; a[i]=a[j]; a[j]=t;
t=b[i]; b[i]=b[j]; b[j]=t;
}
printf("\n\nOrdenado ascendente segun a\nNro a b\n ");
for(i=1;i<=n;i++) printf("%d %3d %3d\n",i,a[i],b[i]);
system("pause");
}
PROGRAMACION DIGITAL MA713-I 146
Ejecución
Ingrese n: 5
Nro a b
1: 9 6
2: 5 10
3: 3 8
4: 7 13
5: 4 5
Aplicación3
Dadas dos matrices A(m*n) y B(n*p), calcular el
producto C=A*B.
n
Cij A
k 1
ik * Bkj
i 1..m
j 1.. p
PROGRAMACION DIGITAL MA713-I 148
Diagrama PSeInt
PROGRAMACION DIGITAL MA713-I 149
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");
}
PROGRAMACION DIGITAL MA713-I 150
Ejecución
Ingrese m,n,p: 2,3,4
Ingrese A(2*3):
5 2 3
1 4 7
Ingrese B(3*4):
1 2 3 4
5 6 7 8
9 10 11 12
Resultado C(2*4):
42.00 52.00 62.00 72.00
84.00 96.00 108.00 120.00
Presione una tecla para continuar . . .
PROGRAMACION DIGITAL MA713-I 151
Problema Propuesto
El método de eliminación de Gauss o simplemente
método de Gauss consiste en convertir un sistema
lineal de n ecuaciones con n incógnitas, en uno
escalonado, en el que la primera ecuación
tiene n incógnitas, la segunda ecuación tiene n - 1
incógnitas, ..., hasta la última ecuación, que tiene 1
incógnita. De esta forma, será fácil partir de la última
ecuación e ir subiendo para calcular el valor de las
demás incógnitas
Se pide:
Resolver el sistema de n ecuaciones A*x=b, mediante
el método de Gauss.
PROGRAMACION DIGITAL MA713-I 152
Problema Propuesto
Sistema de Ecuaciones Inicial:
A11 A12 ... A1n x1 B1
A21 A22 ... A2 n x2 B2
... *
... ... ... ... ...
A
... Ann n*n xn n*1 Bn n*1
n1 An 2