Está en la página 1de 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)

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
LL xi  x i1   yi  y i1 
Leer  2 2

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++)
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.

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 … xn
xj+1 xn-1
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.
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, j2..n b: Arreglo
Paso 2: Compara a2 con aj, esclavo
j3..n Paso 3: Compara a3 con Para i1..n-1
aj, j4..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, jn..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]

También podría gustarte