Download - ARREGLOS BIDIMENSIONALES
![Page 1: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/1.jpg)
CURSO: Lenguaje de Programación I
UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
ESPECIALIDAD INGENIERIA DE SISTEMAS
PROFESOR: ING. JOSÉ ANTONIO FARFÁN AGUILAR
LIMA-2015
PRIMERA SEMANA
1
![Page 2: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/2.jpg)
Los arreglos son estructuras de datos que almacenan datos del mismo tipo.
Los arreglos son entidades estáticas en cuanto a que su tamaño no cambia una vez que han sido creadas.
Cada uno de los elementos de los que consta un arreglo tiene asignado un índice que indica la posición en la que se encuentra almacenado.
El primer elemento del arreglo tiene índice cero (0) y el último tiene índice tamaño_del_arreglo – 1.
Arreglos
2
![Page 3: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/3.jpg)
Vector
índice 0 tamaño-1
Tipos de Arreglos
VECTOR
Conocidos también como Vectores o Registros las celdas de memoria que están consecutivas.El uso de arreglos reduce la cantidad de variables y constantes utilizadas en un programa. Pero lamentablemente los arreglos no pueden almacenar datos de distinto tipo.Los Vectores tienen un tamaño definido, sea directamente al ser declarado y creado en el código o mediante un valor ingresado por teclado y almacenado en una variable.
3
![Page 4: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/4.jpg)
SINTAXIS:
tipoDeDato nombreDelArreglo[ ] ;(unidimensional)EJEMPLO:
int numeros[ ] = { 10, 20, 30, 40, 50, 60 } ;Crea un arreglo de seis (6) elementos con los valores de índices 0, 1, 2, 3, 4 y 5.
índice 0 1 2 3 4 510 20 30 40 50 60
tamaño = 6índice de la última posición = tamaño - 1 = 5
4
![Page 5: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/5.jpg)
EJEMPLO:
5
![Page 6: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/6.jpg)
EJEMPLO 1:#include <iostream.h>#include <conio.h>void main(){int arreglo[6];int i,j;for( i=0; i<6; i++){
cout<<"Ingrese numeros: ";cin>>arreglo[i];}cout<<"Valores del arreglo..."<<endl;for( j=0; j<6; j++){
cout<<arreglo[j]<<endl;}getch();}
6
![Page 7: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/7.jpg)
EJEMPLO 2:
Diseñar un programa que ingrese los sueldos de 20 empleados de
una compañía e imprima un listado de todos los sueldos inferiores
al sueldo promedio. Considere que el sueldo mínimo es de S/. 350.
7
![Page 8: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/8.jpg)
#include <iostream.h>#include <conio.h>void main(){int sueldo[20];int c=0;float prom, suma=0;cout<<"INGRESO DE SUELDOS"<<endl;cout<<"----------------"<<endl;for( int i=0; i<20; i++){cout<<"Ingrese sueldo: ";cin>>sueldo[i];suma=suma+ sueldo[i];c++;prom=suma/c;}cout<<"\nSUELDOS MENORES DEL PROMEDIO"<<endl;cout<<"--------------------------"<<endl;for ( int i=0; i<20; i++)if(sueldo[i]<350){cout<<sueldo[i]<<" ";}
cout<<"\n\nSUELDOS MAYORES DEL PROMEDIO"<<endl;cout<<"--------------------------"<<endl;for ( int i=0; i<20; i++)if(sueldo[i]>=350){cout<<sueldo[i]<<" ";}cout<<"\n\nPROMEDIO DE SUELDOS"<<endl;cout<<"-----------------"<<endl;if(c!=0){cout<<prom;}getch();}
8
![Page 9: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/9.jpg)
EJEMPLO 3:
Diseñar un programa que ingrese los sueldos de 10
empleados de una empresa, almacenarlos en un
arreglo y determine el menor y el mayor sueldo y el
sueldo promedio.
9
![Page 10: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/10.jpg)
#include <iostream.h>#include <conio.h>void main(){int sueldo[10];int c=0;float prom, suma=0,mayor,menor;cout<<"INGRESO DE SUELDOS"<<endl;cout<<"----------------"<<endl;for( int i=0; i<10; i++){cout<<"Ingrese sueldo: ";cin>>sueldo[i];suma=suma+ sueldo[i];c++;prom=suma/c;}menor=sueldo[0];for ( int i=0; i<10; i++){if(sueldo[i]<menor)menor=sueldo[i];}
mayor=sueldo[0];for ( int i=0; i<10; i++){if(sueldo[i]>mayor)mayor=sueldo[i];}cout<<"\nSUELDO MAYOR"<<endl;cout<<"------------\n";cout<<mayor;cout<<"\n\nSUELDO MENOR"<<endl;cout<<"------------\n";cout<<menor;cout<<"\n\nPROMEDIO"<<endl;cout<<"--------\n";if(c!=0){cout<<prom;}getch();}
10
![Page 11: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/11.jpg)
La forma general de declaración de un arreglo bidimensional es la siguiente:tipo nombre[numFil][numCol];Donde:Tipo es el tipo de base del arreglo y puede ser un tipo incorporado (int, float, char, double, etc) o un tipo abstracto (un tipo creado por el programador como es el caso de una estructura)Nombre es el nombre del arreglonumFil es el número de filas del arreglonumCol es el número de columnas del arreglo
MATRICES
11
![Page 12: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/12.jpg)
Ej.: El caso de un arreglo bidimensional llamado venta que consta de 4 filas y cuatro columnas, su declaración seria: int venta[4][4];Esto reserva espacio de memoria para un total de 16 números enteros (4x4) cuya distribución grafica es:
f/c 0 1 2 30 venta[0][0] venta[0][1] venta[0]
[2]venta[0][3]
1 venta[1][0] venta[1][1] venta[1][2]
venta[1][3]
2 venta[2][0] venta[2][1] venta[2][2]
venta[2][3]
3 venta[3][0] venta[3][1] venta[3][2]
venta[3][3]12
![Page 13: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/13.jpg)
OPERACIONES CON ARREGLOS BIDIMENSIONALES
Para poder efectuar operaciones con arreglos bidimensionales normalmente se sigue un recorrido secuencial; del primero al ultimo elemento.Dos son los recorridos mas usuales; recorrido por filas y recorridopor columna. En ambos tipos de recorrido se requieren dos bucles anidados, por ejemplo dos bucles for, uno Por cada dimensión, es decir uno para filas y otro para columnas
13
![Page 14: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/14.jpg)
RECORRIDO POR FILASEn este tipo de recorrido se procesan primero los elementos de la primera fila, acontinuación los elementos de la segunda fila y así sucesivamente.En general, el recorrido completo por filas de cualquier arreglo bidimensional, se hace con el siguiente código:
Considere al respecto un arreglo nota de 3 filas y 4 columnas. La figura muestra el recorrido por filas
14
![Page 15: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/15.jpg)
Diseñar un programa que permita ingresar valores en una matriz de 3x4 (lectura por filas)
int main(){int num[3][4];for(int a=0; a<3; a++){
for(int b=0; b<4; b++) { cout<<"Numero["<<(a+1)<<"],["<<(b+1)<<"]:";cin>>num[a][b]; }}cout<<"\n\n";for(int c=0; c<3; c++){
for(int d=0; d<4; d++) { cout<<setw(5)<<num[c][d]<<" "; } cout<<endl;}getch();}
15
![Page 16: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/16.jpg)
16
RECORRIDO POR COLUMNAS
En este tipo de recorrido se procesan primero los elementos de la primera columnaa continuación los elementos de la segunda columna y así sucesivamente.En general, el recorrido completo por filas de cualquier arreglo bidimensional, se hace con el siguiente código:
Considera al respecto un arreglo A de 3 filas y 4 columnas. La figura muestra el recorrido por filas
![Page 17: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/17.jpg)
17
int main(){int num[3][4];for(int a=0; a<3; a++){
for(int b=0; b<4; b++) { cout<<"Numero["<<(b+1)<<"],["<<(a+1)<<"]:";cin>>num[a][b]; }}cout<<"\n\n";for(int c=0; c<4; c++){
for(int d=0; d<3; d++) { cout<<setw(5)<<num[d][c]<<" "; } cout<<endl;}getch();return 0;}
Diseñar un programa que permita ingresar valores en una matriz de 3x4 (lectura por columnas)
![Page 18: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/18.jpg)
Conclusiones:
Cuando se va a hacer un recorrido por filas el primer for debe ser el for de filas
Cuando se va a hacer un recorrido por columnas el primer for debe ser el for de columnas
Tanto el recorrido por filas como el recorrido por columnas el nombre del elemento se indica por la misma expresión arreg[f][c] donde arreg, f y c tienen los significados indicados anteriormente
18
![Page 19: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/19.jpg)
19
Ejercicio 01
Calcula la suma de los elementos de un arreglo bidimensional de dimensión sum[3][3]
![Page 20: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/20.jpg)
20
void main(){int s=0,i,j;int n[3][3];cout<<"INGRESAR ELEMENTOS DEL ARREGLO"<<endl;cout<<"------------------------------"<<endl;for(int i=0; i<3; i++){
for(int j=0; j<3; j++) {
cout<<"Numero ("<<i<<","<<j<<"): ";cin>>n[i][j]; }}cout<<"\nMUESTRA ELEMENTOS DEL ARREGLO"<<endl;cout<<"------------------------------"<<endl<<endl;for(int i=0; i<3; i++){
for(int j=0; j<3; j++) { cout<<setw(5)<<n[i][j]<<" "; } cout<<endl; }
cout<<"\nMUESTRA LA SUMA DE ELEMENTOS DEL ARREGLO"<<endl;cout<<"----------------------------------------"<<endl;for(i=0; i<3; i++){ for(j=0; j<3; j++) { s+=n[i][j]; }}cout<<"\n";cout<<"Suma: "<<s<<"\n";getch();}
![Page 21: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/21.jpg)
EJEMPLO 02:
Almacenar las notas de 5 alumnos correspondientes a 4 intervenciones (po, pe, tr, lab) en una matriz bidimensional; calcular el promedio de cada alumno y luego mostrar los promedios.
21
![Page 22: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/22.jpg)
22
#include <conio.h>#include <iostream.h>void main () {int nota[5][4],i,j;float promedio[5]={0,0,0,0,0};for (i=0;i<5;i=i+1){ cout<<"ingrese las notas de alumno "<<i+1<<" : \n"; for (j=0;j<4;j=j+1){ cout<<"nota "<<j+1<<" : "; cin>>nota[i][j]; } cout<<endl; }for (i=0;i<5;i=i+1){ for (j=0;j<4;j=j+1){ promedio[i]=promedio[i]+nota[i][j]; } promedio[i]=promedio[i]/4; }cout<<"el promedio de los alumnos son: \n";for (i=0;i<5;i=i+1){ cout<<"alumono "<<i+1<<" : "<<promedio[i]<<endl; }getch();}
![Page 23: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/23.jpg)
EJEMPLO 03:
23
//Diseñar un programa que permita ingresar valores en una matriz //de 3x3, obteniendo como resultado el mayor elemento ingresado
![Page 24: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/24.jpg)
24
#include <iostream.h>#include <iomanip.h>#include <conio.h>int main(){int num[3][3],mayor;//lectura de filasfor(int a=0; a<3; a++){
for(int b=0; b<3; b++) { cout<<"Numero ["<<(a+1)<<"],["<<(b+1)<<"]:";cin>>num[a][b]; }}
//Salida de datoscout<<"\n\n";for(int c=0; c<3; c++){
for(int d=0; d<3; d++)
cout<<setw(5)<<num[c][d]<<""; cout<<endl;}mayor=num[0][0];for(int m=0; m<3; m++){
for(int n=0; n<3; n++) { if(num[m][n]>mayor) mayor=num[m][n]; }}cout<<"El numero mayor es: "<<mayor<<endl;getch();
![Page 25: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/25.jpg)
25
EJEMPLO 04:
Diseñar un programa que permita sumar dos arreglos a[3][3] y b[3][3] de 9 elementos cada uno. El resultado se debe almacenar en un tercer arreglo c[3][3]. La suma se puede definir como: c[k][q]=a[k][q] + b[k][q]
![Page 26: ARREGLOS BIDIMENSIONALES](https://reader033.vdocuments.net/reader033/viewer/2022061602/5695d3d71a28ab9b029f6230/html5/thumbnails/26.jpg)
26
#include <iostream.h>#include <iomanip.h>#include <conio.h>int main(){int a[3][3];int b[3][3];int c[3][3];//ingreso de datos del arreglo acout<<"\nIngrese datos del arreglo a: "<<endl;for(int i=0; i<3; i++){
for(int j=0; j<3; j++){cout<<"Ingrese numero: ";cin>>a[i][j];}
}//ingreso de datos del arreglo bcout<<"\nIngrese datos del arreglo b: "<<endl;for(int m=0; m<3; m++){
for(int n=0; n<3; n++){cout<<"Ingrese numero: ";cin>>b[m][n];}
}cout<<"Fin de datos"<<endl;
cout<<"Matriz a[3][3]"<<endl;for(int c=0; c<3; c++){
for(int d=0; d<3; d++)
cout<<setw(5)<<a[c][d]<<""; cout<<endl;}cout<<"Matriz b[3][3]"<<endl;for(int c=0; c<3; c++){
for(int d=0; d<3; d++)
cout<<setw(5)<<b[c][d]<<""; cout<<endl;}cout<<"suma a[3][3] + b[3][3]"<<endl;for(int k=0; k<3; k++){
for(int q=0; q<3; q++){c[k][q]=a[k][q]+b[k][q];
cout<<setw(5)<<c[k][q]<<""; } cout<<endl;}getch();
}