You are on page 1of 26

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS


ESPECIALIDAD INGENIERIA DE SISTEMAS

CURSO: Lenguaje de Programacin I


PROFESOR: ING. JOS ANTONIO FARFN AGUILAR
PRIMERA SEMANA

LIMA-2015
1

Arreglos
Los arreglos son estructuras de datos que almacenan
datos del mismo tipo.
Los arreglos son entidades estticas en cuanto a que su
tamao 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 posicin en la que
se encuentra almacenado.
El primer elemento del arreglo tiene ndice cero (0) y el
ltimo tiene ndice tamao_del_arreglo 1.

Tipos de
Arreglos
VECTO
R

Conocidos tambin como Vectores o Registros las celdas de


memoria que estn 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 tamao definido, sea directamente al ser
declarado y creado en el cdigo o mediante un valor ingresado
por teclado y almacenado en una variable.

Vector

ndice

tamao-1
3

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

1
10

2
20

3
30

4
40

5
50

60

tamao = 6
ndice de la ltima posicin = tamao - 1 = 5
4

EJEMPLO:

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

EJEMPLO 2:

Disear un programa que ingrese los sueldos de 20 empleados de


una compaa e imprima un listado de todos los sueldos inferiores
al sueldo promedio. Considere que el sueldo mnimo es de S/. 350.

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

EJEMPLO 3:
Disear 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.

#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];
}
10

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

MATRICES
La forma general de declaracin 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 arreglo
numFil es el nmero de filas del arreglo
numCol es el nmero de columnas del arreglo
11

Ej.: El caso de un arreglo bidimensional llamado venta que


consta de 4 filas y cuatro columnas, su declaracin seria:
int venta[4][4];
Esto reserva espacio de memoria para un total de 16 nmeros
enteros (4x4) cuya distribucin grafica es:
f/c

venta[0][0] venta[0][1]

venta[0]
[2]

venta[0][3]

venta[1][0] venta[1][1]

venta[1]
[2]

venta[1][3]

venta[2][0] venta[2][1]

venta[2]
[2]

venta[2][3]

venta[3][0] venta[3][1]

venta[3]
[2]

venta[3][3]

12

OPERACIONES CON ARREGLOS BIDIMENSIO


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 recorrido
por columna. En ambos tipos de recorrido se requieren dos bucles
anidados, por ejemplo dos bucles for, uno Por cada dimensin, es
decir uno para filas y otro para columnas

13

RECORRIDO POR FILAS

En este tipo de recorrido se procesan primero los elementos de la p


continuacin los elementos de la segunda fila y as sucesivamente.
En general, el recorrido completo por filas de cualquier arreglo bidim
hace con el siguiente cdigo:

Considere al respecto un arreglo nota de 3 filas y 4 columnas. La fig


recorrido por filas

14

Disear 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

RECORRIDO POR COLUMNAS

En este tipo de recorrido se procesan primero los elementos de la primera columna


a continuacin los elementos de la segunda columna y as sucesivamente.
En general, el recorrido completo por filas de cualquier arreglo bidim
hace con el siguiente cdigo:

Considera al respecto un arreglo A de 3 filas y 4 columnas.


La figura muestra el recorrido por filas

16

Disear un programa que permita ingresar valores en una matriz de 3x4


(lectura por columnas)
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;
17
}

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 expresin arreg[f][c] donde arreg, f y c tienen
los significados indicados anteriormente
18

Ejercicio 01
Calcula la suma de los elementos de un arreglo
bidimensional de dimensin sum[3][3]

19

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

20

EJEMPLO 02:

Almacenar

las

notas

de

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

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

22

EJEMPLO 03:
//Disear un programa que permita ingresar valores en
una matriz //de 3x3, obteniendo como resultado el mayor
elemento ingresado

23

//Salida de datos
cout<<"\n\n";
for(int c=0; c<3; c++)
{
for(int d=0; d<3; d++)

#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
int main()
{
int num[3][3],mayor;
//lectura de filas
for(int a=0; a<3; a++)
{
for(int b=0; b<3; b++)
{
cout<<"Numero ["<<(a+1)<<"],
["<<(b+1)<<"]:";cin>>num[a][b];
}
}

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

EJEMPLO 04:

Disear 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]

25

#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 a
cout<<"\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 b
cout<<"\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];
}
}
26
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();
}

You might also like