Documentos de Académico
Documentos de Profesional
Documentos de Cultura
06 Arreglos
06 Arreglos
VARIABLE
SUBINDICADA
ARREGLO LINEAL
Variable Subindicada
Tipos:
• Arreglo Lineal: un solo subíndice (vector)*
• Arreglo Bidimensional: dos subíndices
(matriz)
subíndice
50 elementos
Arreglo Lineal
Lectura y Escritura:
scanf(“formato”,&elemento[i-ésimo]);
printf( "formato" ,elemento[i-ésimo]);
~
Ejemplo: Leer
scanf(“%d”, &x[i]);
xi
~
printf(“%d”, x[i]); Escribir
xi
PROGRAMACION DIGITAL MA713-I
Ejemplo 1
x (xn,yn)
x32,y
,y32
… (x3,y3)
… X
xn,yn (x1,y1)
(x2,y2)
Y
Diagrama de Flujo
Inicio
Leer
n i 1 .. n
i 1 .. n
LL xi x i1 yi y i1
Leer 2 2
xi,yi
Escribir
L
xn+1 x1 Fin
yn+1 y1
L0
/*Ejemplo de Arreglos lineales*/
#include<stdio.h>
#include<math.h>
int main()
{ int n,i; double
L=0,x[100],y[100]
;
printf("n: "); scanf("%d",&n);
for(i=1; i<=n; i++)
{printf("x%d,y%d: ",i,i);
scanf("%lf,
%lf",&x[i],&y[i]);
}
x[n+1]=x[1];
y[n+1]=y[
1]; "
for(i=1;
i<=n; i++)
VARIABLE
SUBINDICADA
Arreglo Bidimensional
Arreglo Bidimensional
Tiene dos subíndices.
Declaración:
tipo
nombre_arreglo
[N° filas][N°
columnas];
col 0 col 1 col 2 … col 29
Ejemplo:
int x[20][30];
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.
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.
a1 a2 … ai … aj … an
Paso 1 an-1
Paso 2
Paso 3 …
… …
Paso n-1
a: Arreglo maestro
Paso 1: Compara a1 con aj, j2..n b: Arreglo
Paso 2: Compara a2 con aj, esclavo
j3..n Paso 3: Compara a3 con Para i1..n-1
aj, j4..n
… Si aji
Para >ai+1..n
j
Intercambia ai con a j
…
Paso i: Compara ai con aj, Intercambia bi con bj
jPaso n-1: Compara an-1 con aj, jn..n
i+1..n FinSi
Diagrama a: Arreglo maestro
b: Arreglo
PSeInt esclavo
Intercambia
ai con aj
Intercambia
bi con bj
Ejemplo 4
Dadas dos A(m*n) y B(n*p), calcular el
matrices producto
C=A*B.
A12 B12
A11 A1n B11 B1 p
A21 ... A2n ... B2 p
B21
A22 *
...
B22
... ... ...
... ...
Am1 Amn
m*n n1 np
... ... n* p
... n
Am2
Cij Aik * B...kj
... k 1 B Bn2 ... B
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]