Académique Documents
Professionnel Documents
Culture Documents
ALGORITMICA I
SEPARATA
ARREGLOS : FUNDAMENTOS Y APLICACIONES
P[n][m][k ].
ARREGLOS
PAG. 1
UNMSM
ALGORITMICA I
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:
ARREGLOS
PAG. 2
UNMSM
ALGORITMICA I
// 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
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
ARREGLOS
PAG. 5
UNMSM
ALGORITMICA I
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
ARREGLOS
PAG. 6
UNMSM
ALGORITMICA I
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
ARREGLOS
PAG. 9
UNMSM
ALGORITMICA I
**
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')); } **
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(); } **
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",¬a1[k]); printf("Ingrese el nota2:"); scanf("%d",¬a2[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();
} **
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(); } **
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
**
ARREGLOS
PAG. 15
UNMSM
ALGORITMICA I
} **
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
ARREGLOS
PAG. 18