Vous êtes sur la page 1sur 18

UNMSM

ALGORITMICA I

SEPARATA
ARREGLOS : FUNDAMENTOS Y APLICACIONES

P[n][m][k ].

Prof. Ulises ROMAN C. Junio, 2006

ARREGLOS

PAG. 1

UNMSM

ALGORITMICA I

ARREGLOS : FUNDAMENTOS Y APLICACIONES 1. DEFINICION:


Segn Joyanes AaGUILAR Un arreglo es una serie de datos del mismo tipo estos datos se denominan elementos del arreglo Segn Julio VASQUEZ Un arreglo es una estructura homognea de datos almacenados consecutivamente en memoria Segn Ulises ROMAN Un arreglo es una estructura de datos DINAMICOS que guardan la misma relacin y tipo con los elementos que poseen

2. CARACTERISTICAS:
Conserva los valores para su posterior utilizacin Facilita obtener datos de la memoria Facilita el acceso eficiente a ellos Se usa para procesar una lista de datos mas de una vez. Se puede representar de manera vertical y horizontal

3. DECLARACION DE ARREGLOS:
Los arreglos se pueden inicializar y declarar segn su aplicacin como sigue:

Int Float Double Char Otros

Identificador de Nombre: Vector V[t] A[w]

Numero de Elementos del Arreglo: [10] [20]

ARREGLOS

PAG. 2

UNMSM

ALGORITMICA I

Ejemplos: Int A[4]; Double x[100]; float N[2]; Char Cadena[6];

// Declara una lista de 4 elementos // Declara una lista de 100 elementos // Declara una lista de 2 elementos // Declara una lista tipo cadena de 6 elementos

4. TIPOS DE ARREGLOS:
Los arreglos se clasifican por el numero de ndices que soportan, as existe arreglos que usan un ndices, dos ndices y mas ndices denominados: Uni - dimensionales (VECTORES), bi - dimensionales (MATRICES) y multi - dimensionales(POLIEDROS).

4.1. Arreglos UNI- DIMENSIONALES Son arreglos que tienen un solo ndice de acceso, tambin
conocidos como VECTORES Representacin Grfica:
V[ 1 ] V[ 2 ]
14

V[ 3 ]
20

V[ 4 ]
4

***** V[ n ]

V:

10

*****

Tamao de (i = 1 a n ) 10 14 20 4 * * * i

X[1] X[2] X[3] X: X[4] * * * X[n]

Tamao de (i = 1 a n )

ARREGLOS

PAG. 3

UNMSM

ALGORITMICA I

4.2. Arreglos BI- DIMENSIONALES Son arreglos que tienen dos ndice (fila , columna) de acceso,
tambin conocidos como TABLAS / MATRICES. Representacin Grfica:

M[1]

M[2]

*****

M[m]

M[1] M[2] M:
* * M[n] M[n][m]

* *

4.3. Arreglos MULTI- DIMENSIONALES Son arreglos que tienen tress o mas ndice (dimensiones) de
acceso, tambin conocidos como POLIEDROS. Representacin Grfica:
P[n][m][k].

P:

ARREGLOS

PAG. 4

UNMSM

ALGORITMICA I

5. RESUMEN DE ARREGLOS:
Las estructuras de datos permiten combinar elementos de diferentes tipos de datos como Arreglos, punteros y registros, etc. Para almacenar elementos del mismo tipo de datos y de esta manera se puede usar en problemas como: Simulacin de matrices Tableros de juego ( ajedrez o dama, etc.) Tratamiento de cadenas Trabajos en 3D

6. APLICACIONES CON ARREGLOS:


1. Analizar y leer el siguiente programa y escribir el resultado que genera; sabiendo que Pedido toma el valor de 5. Inicio Entero P[6] , C[6], K, Pedido, R[6] K 1 Mientras (K <= 6) Hacer P[K] K*100 C[K] K*1000 K K+1 Fin_mientras Leer pedido K 1 J 6 Mientras (K <= 6) Hacer R [k] P[j] * Pedido C[k] C[K] R[K] K K1 Fin_mientras K 1 Mientras ( K <= 6) Hacer Escritura R[K], C[K] K K+1 Fin_mientras Fin RPTA: Despus analizar el algoritmo se obtiene :

ARREGLOS

PAG. 5

UNMSM

ALGORITMICA I

Antes de pedido P C Despus del pedido R C

1 100 1000 1 3000 -2000

2 200 2000 2 3000 -1000

3 300 3000 3 3000 0

4 400 4000 4 3000 1000

5 500 5000 5 3000 2000

6 600 6000 6 3000 3000

2.Cul ser el contenido de tal arreglo despus de la ejecucin del siguiente lado for? Indice 14 26 18 25 40 32 12 6 49

for(i=1; i<=7; i++) { for(i=1;i<=7;i++) { if(b[i] > b[i+1]) { temp=b[i+2]; b[i+2]=b[i+1]; b[i+1]=temp; } } } RPTA: Despus de analizar el algoritmo se tubo como salida: Indice 1 14 2 26 3 25 4 40 5 32 6 12 7 18 8 49 9 6

3 . Cul es el resultado del siguiente fragmento? For(indice=0; indice<5; indice++) { cout<<C[indice]<<endl; }

ARREGLOS

PAG. 6

UNMSM

ALGORITMICA I

indice Char[5]; 0 LIMA 1 CALLAO 2 PTE.PIEDRA 3 ANCON 4 ATE

La salida de este vector no se vera como el cuadro anterior ,ya que un vector declarado como CHAR puede almacenar un solo carcter por cada espacio de memoria asignado Solo se podra indicar la primera letra de cada lugar .Tal vez la solucin seria crear vectores independientes para cada lugar de procedencia ,y despus mostrarlos simultneamente. #include<iostream.h> #include<conio.h> #include<stdlib.h> #include<stdio.h> void main() { char c[5],let; int indice; clrscr(); for(indice=1;indice<=5;indice++) { clrscr(); cout<<"\n\n\n\t\t\t**** VECTOR DE CARACTERES ****"; cout<<"\n\n\t Ingrese los caracteres al vector"; cout<<"\n\n\tLa posicion ["<<indice<<"] ocupa :"; cin>>let; c[indice]=let; } clrscr(); cout<<"\n\n\t Los valores ingresados al vector son: "; for(indice=1;indice<=5;indice++) { cout<<"\n\n\tLa posicion ["<<indice<<"] ocupa :"<<c[indice]; } getch(); } 4. Cual es el resultado del siguiente algoritmo int A[5][7] indice1 indice2

ARREGLOS

PAG. 7

UNMSM

ALGORITMICA I

0 1 2 3 4 5

For(indice1=0; indice1<5; indice1++) { For(indice2=0; indice2<5; indice2++) { cout<<Ingrese datos en A[<<indice1<<indice2<<]; cin>>A[indice1][indice2]; } RPTA: Despus de analizar el algoritmo compuesta de la matiz A[indice1][indice2] Se observa que solo se puede ingresar los datos a la matriz, pero no se puede visualizar ninguna salida ya que el algoritmo esta incompleto, si se quiere visualizar el resultado del algoritmo se tendr que aadir dos sentencias FOR ms al algoritmo. Adems se observa que solo tendr como salida desde A[0][0].hasta A[4][4];

ARREGLOS

PAG. 8

UNMSM

ALGORITMICA I

Programa: ARREGLO DETERMINA EL MAYOR DE UN VECTOR


#include<iostream.h> #include<stdio.h> #include <conio.h> void main() { int A[100], mayor; int i,n; clrscr(); cout<<"ingrese numero de notas:"<<endl; cin>>n; for (i=1;i<=n;i++) { cout<<"Ingrese las nota:"<<endl; cin>>A[i]; } mayor = A[1]; for (i=2;i<=n;++i) { if (mayor<A[i]) mayor = A[i]; } cout<<"El mayor es: "<<mayor; getch(); ) **

PROGRAMAS: IMPRIMIR EL ARREGLO PERO EN ORDEN INVERTIDO


#include<stdio.h> #include<conio.h> void main() { int N[16]; int K,Fila; clrscr( ); gotoxy(42,1);printf("*** ARREGLOS ***"); gotoxy(30,3);printf("DATOS"); gotoxy(60,3);printf("RESULTADO"); Fila=5; for(K=0;K<16;K=K+1) { gotoxy(30,Fila);printf("%i.-",K+12); gotoxy(35,Fila);scanf("%i",&N[K]); fflush(stdin); Fila=Fila+1; } Fila=5; for(K=15;K>=0;K=K-1) { gotoxy(60,Fila);printf("%i",N[K]); Fila=Fila+1; } getch(); }

ARREGLOS

PAG. 9

UNMSM

ALGORITMICA I

**

Programa : ARREGLO PARA N NOTAS


#include<stdio.h> #include<conio.h> void main() { int codigo[10],i,j; char nombre[20]; char sexo[1],tecla,f,m; float nota1[3]; float nota2[3]; float nota3[3]; float promedio[9]; int k; do { clrscr(); for(i=1;i<25;i++) { gotoxy(1,i);printf(""); gotoxy(78,i);printf(""); } for(j=1;j<78;j++) { gotoxy(j,1);printf(""); gotoxy(j,24);printf(""); } k=0; while(k<=1) { gotoxy(28,3);printf("PROMEDIO DE NOTAS"); gotoxy(12,5);printf("Ingrese su Codigo:"); scanf("%d",&codigo[k]); gotoxy(12,6);printf("Ingrese su Nombre:"); scanf("%s",&nombre[k]); gotoxy(12,7);printf("Ingrese el Sexo:"); scanf("%s",&sexo[k]); if((sexo[k]=='f')||(sexo[k]=='m')) { gotoxy(12,8);printf("Ingrese nota1:"); scanf("%f",&nota1[k]); gotoxy(12,9);printf("Ingrese nota 2:");scanf("%f",&nota2[k]); gotoxy(12,10);printf("Ingrese nota 3:");scanf("%f",&nota3[k]); promedio[k]=(nota1[k]+nota2[k]+nota3[k])/3; if((promedio[k]>=10.5)&&(promedio[k]<21)) { gotoxy(15,15);printf("!FELICITACIONES!, Ud. esta Aprobado con: %0.2f",promedio[k]); } else { if(promedio[k]<10.5) { gotoxy(15,15);printf("!Estudia mas!, ud . esta desaprobado con: %0.2f",promedio[k]); }

ARREGLOS

PAG. 10

UNMSM

ALGORITMICA I

else { gotoxy(15,15);printf("!Por Favor!, corrija el valor de las notas"); } } } else { gotoxy(15,15);printf("ERRROR!, verifique el dato sexo que ha mostrado"); } k =k+1; } gotoxy(30,22);printf("DESEA UD. CONTINUAR(S/N)?"); tecla=getch(); }while((tecla=='s')||(tecla=='S')); } **

PROGRAMA : QUE INTERCALA DOS VECTORES A Y B EN C


#include<conio.h> #include<iostream.h> void main() { int x,y,i,j; int a[10],b[10],c[20]; clrscr(); cout<<"Ingrese el numero de elementos de los vectores: "; cin>>x; cout<<"\n Ingrese Elementos del vactor A:"; for(i=0;i<x;i++) { gotoxy(5*i+1,4); cin>>a[i]; }; cout<<"\n Ingrese Elementos del vector B:"; for(i=0;i<x;i++) { gotoxy(5*i+1,7); cin>>b[i]; }; for(i=0,j=0;i<x+x;i+=2,j++) { c[i]=a[j]; c[i+1]=b[j];}; gotoxy(1,9);cout<<"El vector C es:"; for(i=0;i<x+x;i++) { gotoxy((5*i)+17,9); cout<<c[i]; }; getch(); }

PROGRAMA: PAR INSERTAR UN DATO EN UN ARREGLO


#include<stdio.h>

ARREGLOS

PAG. 11

UNMSM

ALGORITMICA I

#include<string.h> #include<conio.h> void main() { char DISTRITO[16][30]; int k,fila,i,pos; clrscr(); gotoxy(30,2);printf("ARREGLO DISTRITO"); gotoxy(1,3);printf(""); gotoxy(2,3); for(k=1;k<=77;k=k+1) { printf(""); } gotoxy(78,3);printf(""); gotoxy(5,4);printf("Ingrese distritos :"); fila=5; for(k=0;k<16;k=k+1) { gotoxy(3,fila);printf("%2i.-",k+1); gotoxy(9,fila);gets(DISTRITO[k]); fflush(stdin); fila=fila+1; } gotoxy(5,22);printf("Ingrese posicin a insertar :"); gotoxy(36,22);scanf("%i",&pos); gotoxy(5,23);printf("Ingrese nuevo distrito :"); for(k=0;k<16;k=k+1) { if (k==pos-1) { for(i=15;i>pos-1;i=i-1) { strcpy(DISTRITO[i],DISTRITO[i-1]);fflush(stdin);} } } gotoxy(36,23);gets(DISTRITO[pos-1]); gotoxy(45,4);printf("Resultado :"); fila=5; for(k=0;k<16;k=k+1) { gotoxy(45,fila); printf("%i.-",k+1); gotoxy(51,fila);printf("%s",DISTRITO[k]); fila=fila+1; } getch(); } **

PROGRAMA: QUE LISTA DE ALUMNAS APROBADAS


#include <stdio.h> #include <conio.h> #include <stdlib.h> void main () { int codigo[20]; char nombre[20][30]; char sexo[20]; int nota1[20],nota2[20]; float promedio[20]; int k,cf,cm,dato; k=0; cf=0;

ARREGLOS

PAG. 12

UNMSM

ALGORITMICA I

cm=0; clrscr(); printf("Ingrese la cantidad de datos a procesar:"); scanf("%d",&dato); while(k<=dato) { printf("Ingrese el codigo:"); scanf("%d",&codigo[k]); printf("Ingrese el nombre:"); scanf("%s",&nombre[k]); printf("Ingrese el sexo:"); scanf("%s",&sexo[k]); printf("Ingrese el nota1:"); scanf("%d",&nota1[k]); printf("Ingrese el nota2:"); scanf("%d",&nota2[k]); promedio[k]=(nota1[k]+nota2[k])/2; if(promedio[k]>=10.5) { printf(" aprobados con : %f",promedio[k]); } else { printf(" Desaprobado con : %f",promedio[k]); } if (sexo[k]=='f') { cf=cf+1; printf(" numero de alumnas aprobadas:%d\n",cf); } if (sexo[k]=='m') { cm=cm+1; printf(" numero de alumnos aprobadas:%d\n",cm); } k=k+1; getch();

} **

PROGRAMA : SUMA DE MATRICES


# include<stdio.h> # include<conio.h> void main() { int m,n,i,j; clrscr(); printf(" Ingrese las dimensiones de las matrices\n"); scanf(" %d",&m); scanf(" %d",&n); int A[10][10], B[10][10], C[10][10]; clrscr();

ARREGLOS

PAG. 13

UNMSM

ALGORITMICA I

printf(" Ingrese los datos de la primera matriz"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { gotoxy(10+(j*4),i+2); scanf("%d",&A[i][j]); }; }; printf("\n Ingrese los datos de la segunda matriz"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { gotoxy(10+(j*4),m+(i+4)); scanf("%d",&B[i][j]); }; }; printf("\n La suma de matrices es"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { C[i][j]=A[i][j]+B[i][j]; gotoxy(10+(j*4),(2*m)+(i+6)); printf("%d",C[i][j]); }; };getch(); } **

PROGRAMA: ENCUENTRA VALOR MAYOR, MENOR DE UNA MATRIZ


#include<iostream.h> #include<stdio.h> #include <conio.h> void main() { int A[100][100], mayor,menor; int i,n,m,j; int sumafila,sumacol; clrscr(); cout<<"ingrese fila:"<<endl; cin>>n; cout<<"ingrese columna:"<<endl; cin>>m; cout<<"Ingrese los elementos de la matriz:"<<endl; for (i=1;i<=n;i++) { for (j=1;j<=m;j++) { gotoxy(10+(j*4),i+5); cin>>A[i][j]; } } // proceso de calculo mayor y menor de la matriz mayor = A[1][1]; menor=A[1][1]; for (i=2;i<=n;++i) {

ARREGLOS

PAG. 14

UNMSM

ALGORITMICA I

} gotoxy(9,17); cout<<"El elemento mayor es: "<<mayor<<endl; gotoxy(9,18); cout<<"El elemento menor es: "<<menor<<endl; // fin calculo de mayor y menor de la matriz // suma de cada fila for (i=1;i<=n;i++) { sumafila=0; for (j=1;j<=m;j++) { sumafila=sumafila+A[i][j]; } gotoxy(10+(j*4),i+10); cout<<i<<" fila: "<<"su suma es:"<<sumafila; } // fin suma de filas // suma de cada columnas for (j=1;j<=m;j++) { sumacol=0; for (i=1;i<=n;i++) { sumacol=sumacol+A[i][j]; } gotoxy(i+13,j+19); cout<<j<<" columna: "<<"su suma es:"<<sumacol; } getch(); // fin suma de columna

for (j=1;j<=m;j++) { if(mayor<A[i][j]) { mayor=A[i][j]; } if(menor>A[i][j]) { menor=A[i][j]; } }

**

PROGRAMA : SUMA DE CADENAS USANDO ARREGLOS


#include<conio.h> #include<iostream.h> #include<string.h> void main() { char A[10],B[10],C[2]=" "; clrscr(); cout<<"Ingrese el nombre:";

ARREGLOS

PAG. 15

UNMSM

ALGORITMICA I

} **

cin>>A; cout<<"Ingrese el apellido:"; cin>>B; cout<<"La cadena es:"<<strcat(A,strcat(C,B)); getch();

PROGRAMA: QUE ORDENA UN VECTOR EN FORMA ASCENDENTE


#include<conio.h> #include<stdio.h> main() { int dato[10],temp; int n,i,j; clrscr(); gotoxy(10,5); printf("PROGRAMA QUE LEE NUMEROS Y LOS ORDENA EN FORMA ASCENDENTE"); gotoxy(24,8); printf("ingrese numeros de datos:"); scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&dato[i]); for(i=0;i<n;i++) for(j=i+1;j<n;j++) if (dato[i]>dato[j]) { temp=dato[i]; dato[i]=dato[j]; dato[j]=temp; } for(i=0;i<n;i++) { gotoxy(70,i+9); printf("%d\n",dato[i]); } getch(); } **

PROGRAMA: CALCULA SUMA MAYOR DE FILA COLUMNA DE UNA MATRIZ Y EL VALOR MAYORY MENOR DE LA MATRIZ
#include<iostream.h> #include<stdio.h> #include <conio.h> void main() { int A[100][100], mayor,menor; int i,n,m,j; int sumafila,sumacol; clrscr(); cout<<"ingrese fila:"<<endl;

ARREGLOS

PAG. 16

UNMSM

ALGORITMICA I

cin>>n; cout<<"ingrese columna:"<<endl; cin>>m; cout<<"Ingrese los elementos de la matriz:"<<endl; for (i=1;i<=n;i++) { for (j=1;j<=m;j++) { gotoxy(10+(j*4),i+5); cin>>A[i][j]; } } // proceso de calculo mayor y menor de la matriz mayor = A[1][1]; menor=A[1][1]; for (i=2;i<=n;++i) { for (j=1;j<=m;j++) { if(mayor<A[i][j]) { mayor=A[i][j]; } if(menor>A[i][j]) { menor=A[i][j]; } } } gotoxy(10,18); cout<<"El elemento mayor es: "<<mayor<<endl; gotoxy(10,19); cout<<"El elemento menor es: "<<menor<<endl; //getch(); // fin calculo de mayor y menor de la matriz // suma de cada fila for (i=1;i<=n;i++) { sumafila=0; for (j=1;j<=m;j++) { sumafila=sumafila+A[i][j]; } gotoxy(10+(j*4),i+10); cout<<i<<" fila: "<<"su suma es:"<<sumafila; } getch(); // fin suma de filas // suma de cada columna for (j=1;j<=m;j++) { sumacol=0; for (i=1;i<=n;i++) { sumacol=sumacol+A[i][j];

ARREGLOS

PAG. 17

UNMSM

ALGORITMICA I

} getch(); // fin suma de filas

gotoxy(10+(j*4),i+10); cout<<i<<" columna: "<<"su suma es:"<<sumacol;

ARREGLOS

PAG. 18

Vous aimerez peut-être aussi