26
CURSO: Lenguaje de Programación I UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS ESPECIALIDAD INGENIERIA DE SISTEMAS PROFESOR: ING. JOSÉ ANTONIO FARFÁN AGUILAR LIMA-2015 PRIMERA SEMANA 1

ARREGLOS BIDIMENSIONALES

Embed Size (px)

DESCRIPTION

algoritmos

Citation preview

Page 1: ARREGLOS BIDIMENSIONALES

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

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

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

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

EJEMPLO:

5

Page 6: ARREGLOS BIDIMENSIONALES

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

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

#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

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

#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

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

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

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

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

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

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

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

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

19

Ejercicio 01

Calcula la suma de los elementos de un arreglo bidimensional de dimensión sum[3][3]

Page 20: ARREGLOS BIDIMENSIONALES

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

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

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

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

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

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

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();

}