Sei sulla pagina 1di 20

PROGRAMACION DIGITAL MA713-I

VARIABLE
SUBINDICADA
ARREGLO LINEAL
Variable Subindicada

Es una variable que almacena un conjunto de


valores del mismo tipo de dato. Cada valor
del conjunto se identifica con un subíndice
entero (0, 1, 2,…). También se le denomina
arreglo.

Tipos:
• Arreglo Lineal: un solo subíndice (vector)*
• Arreglo Bidimensional: dos subíndices
(matriz)

* Una cadena de caracteres equivale a un arreglo lineal de


caracteres
Arreglo Lineal

Tiene un solo subíndice.

Declaración: tipo nombre_arreglo[N° elementos];

Ejemplo: int x[50];

x[0] x[1] x[2] … x[49]


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

Calcular la longitud de una poligonal cerrada de n


vértices.
x1,y1
(x4,y 4)
x2,y2
x3,y3 (xn,yn)
… (x3,y3)
… X
xn,yn (x1,y1)
(x2,y2)
Y
Diagrama de Flujo
Inicio 
Leer
n i  1 .. n

i  1 .. n
LL xi  x i1 2  yi  y i1 2
Leer
xi,yi

Escribir
L
xn+1  x1
Fin
yn+1  y1

L0


/*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++)
L+=sqrt(pow(x[i]-x[i+1],2)+pow(y[i]-y[i+1],2));
printf("L=%lf\n",L);
system( pause");
}
VARIABLE
SUBINDICADA
Arreglo Bidimensional
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 con x 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");
}

Potrebbero piacerti anche