Está en la página 1de 12

UNIVERSIDAD MILITAR NUEVA GRANADA

5.

CENTRO DE SISTEMAS

ALMACENAMIENTO DE DATOS EN ARREGLOS


(ARRAYS)

OBJETIVOS DE LA UNIDAD
Utilizar datos compuestos o (estructurados) para el almacenamiento de informacin, como
son los arreglos.

INTRODUCCION
Para resolver algunos problemas es necesario manejar datos del mismo tipo; los arreglos
nos permiten mantener en memoria datos sin necesidad de disponer de una variable por
cada elemento, adems almacenar y manipular grandes cantidades de datos.
Los arreglos son un conjunto de variables que en la memoria ocupan posiciones continuas
de almacenamiento y que tienen un mismo nombre. El grupo de variables que conforman
un arreglo tienen las mismas caractersticas, es decir, son de la misma clase (numrica o
alfanumrica); y adems tienen el mismo tamao, luego es un conjunto finito y ordenado
de elementos homogneos.
El tipo de dato almacenado en un arreglo puede ser cualquiera: numrico, carcter o
lgico. Por ejemplo se puede almacenar en un arreglo los nombres de los estudiantes de
un curso, la temperatura mnima registrada en una ciudad durante una semana o las
coordenadas de una figura en el plano cartesiano.
Los arreglos pueden ser: unidimensionales y bidimensionales. A los arreglos de una
dimensin se denominan listas o vectores, a los de dos dimensiones se les llama tablas o
matrices, a los de ms dimensiones se les denomina arreglos de n dimensiones.

5.1.

ARREGLOS UNIDIMENSIONALES

Los arreglos de una dimensin, llamados tambin listas o vectores, permiten almacenar
datos que tienen las mismas caractersticas. Se caracterizan por tener un solo subndice.
Por ejemplo: nombres, sueldos, edades, temperatura, talla, etc.
En general se puede visualizar un arreglo de una dimensin de la siguiente forma:
NOMBRE:
POSICION:
CONTENIDO:
ELEMENTO

1.65

1.35

1.45

1.65

talla
5

1.23

talla[0] talla[1] . . .

1.66

1.42

1.50

1.75

10

1.60
Talla[9]

Esto es el arreglo talla tiene 10 elementos: talla[0] contiene 1.65, talla[1] contiene 1.35,
talla[2] contiene 1.45, talla[3] contiene 1.65 y as sucesivamente, el ltimo elemento,
talla[9] contiene 1.60.

MANUAL DE LGICA Y ALGORITMOS

Si el nombre del arreglo es a, entonces a[0] es el nombre del elemento que est en la
posicin 1, a[1] es el nombre del elemento que est en la posicin 2. En general, el
elemento i-simo, a[i], est en la posicin i+1. Estos nmeros se denominan ndices o
subndices del arreglo.

DECLARACIN DE UN VECTOR EN C++

Al igual que las variables, un arreglo se debe declarar antes de utilizarlo y se hace de modo similar a
las variables, con la precaucin de mencionar el nmero de elementos que contendr el arreglo entre
los corchetes cuadrados:
Sintaxis de la instruccin:
Tipo_de_dato nombre_del_arreglo[numero de elementos]
Por ejemplo, para crear una lista de diez datos enteros con el nombre edades se escribe:
int edades[10];
Esto hace que el compilador reserve espacio suficiente para contener diez valores enteros, bajo el
nombre edades. Los enteros ocupan 2 bytes, de modo que un arreglo de diez enteros ocupara 20
bytes de memoria.
Se puede declarar uno o ms arreglos del mismo tipo en una misma instruccin as:

float b[10], c[7], d[4];

INICIALIZACIN DE UN VECTOR EN C++

Una vez declarado el arreglo y antes de utilizarlo, se le debe asignar valores a cada elemento, esto es,
proporcionarle los datos que almacenar al arreglo. Para asignar estos valores podemos proceder de
las siguientes tres maneras:

En la declaracin del arreglo, as:


int edades[10]={12,16,20,18,17,11,10,16,19,20};

En este caso cada uno de los 10 elementos del arreglo edades asume su valor. En el caso de que le
faltaran valores, los asumira con ceros; por el contrario si sobran elementos, se produce un error.

Inicializar en ceros todo el arreglo:

int n[8]={0};
2

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

En este caso cada uno de los 8 elementos del arreglo n asume valor 0.

Utilizando una estructura de repeticin como while, do-while o for:

for(i=0;i<=9;i++)
unos[i]=1;
En este caso cada uno de los 10 elementos del arreglo unos, asume el valor de 1.
Ejemplo.
Definir un vector que contenga las edades de 10 alumnos. Calcular y escribir la cantidad
de alumnos mayores de edad y la cantidad de menores de edad.
Variables: EDAD: Vector
X: Sub-ndice
C1: Cantidad de mayores de edad
C2: Cantidad de menores de edad

MANUAL DE LGICA Y ALGORITMOS

PSEUDOCODIGO

DIAGRAMA DE FLUJO

Inicio
C1 0
C2 0
para X 0,9,1 hacer
leer EDAD[X]
si (EDAD[X] >= 18)
entonces C1 C1+1
sino C2 C2 + 1
fin_si
fin_para
escribir C1,C2
Fin

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

CODIGO EN C++
/*Programa que ingresa en un vector las edades de 10 alumnos, calcula y escribe
la cantidad de alumnos mayores de edad y menores de edad.*/
#include<iostream>
using namespace std;
int main()
{
int EDAD[10],C1=0,C2=0;
cout<<"Escriba la edad de los estudiantes: "<<endl;
for(int X=0;X<=9;X++)
{
cin>>EDAD[X];
if(EDAD[X]>=18)
C1=C1+1;
else C2=C2+1;
}
cout<<"Mayores de edad: "<<C1<<" Menores de edad: "<<C2<<endl;
system("pause");
}

5.2.

ARREGLOS BIDIMENSIONALES

Los arreglos de dos dimensiones, llamados tambin tablas o matrices, se caracterizan por
tener dos ndices. Por ejemplo: nombres por dependencia, sueldos por rangos, edades
por estrato, temperatura por zonas, talla por edades, etc.
En el siguiente ejemplo: El nombre del arreglo es a, es un arreglo de cuatro filas por tres
columnas, para un total de doce elementos.

Fila
Fila
Fila
Fila

0
1
2
3

Columna 0
a[0][0]
a[1][0]
a[2][0]
a[3][0]

Columna 1
a[0][1]
a[1][1]
a[2][1]
a[3][1]

Columna 2
a[0][2]
a[1][2]
a[2][2]
a[3][2]

MANUAL DE LGICA Y ALGORITMOS

Cada uno de los elementos de a, est identificado por un nombre de elemento de la


forma: a[i],[j], donde i corresponde a la fila y j a la columna.
En el siguiente ejemplo:
Fila
Fila
Fila
Fila

0
1
2
3

Columna 0
900
400
300
250

Columna 1
600
450
680
550

Columna 2
755
615
420
150

Columna 3
280
715
690
800

Cada elemento representa el cdigo de un trabajador cualquiera. Si a este conjunto de


cdigos organizados por filas y columnas, se le asigna el nombre IDENTI, se puede hacer
referencia a cualquier elemento del arreglo bidimensional agregando al nombre IDENTI,
dos nmeros separados por una coma y encerrados entre parntesis (subndices). El
primer nmero indica siempre la fila a la cual se hace referencia, y el segundo indica la
columna.
IDENTI[2],[3] = 690
IDENTI[2],[0] = 300
IDENTI[3],[3] = 800
IDENTI[0],[3] = 280

DECLARACIN DE UNA TABLA EN C++

Los arreglos de dos dimensiones se deben declarar antes de ser utilizados, con la
precaucin de mencionar el nmero de elementos: renglones y columnas,
entre
corchetes cuadrados.
Sintaxis de la instruccin:
Tipo_de_dato nombre_del_arreglo[numero_de_renglones][numero_de_columnas]
Por ejemplo, para crear una tabla de tres renglones por diez columnas, de tipo numrico
real y de nombre datos se escribe:

float datos[3][10];

INICIALIZACIN DE UNA TABLA EN C++

Las tablas se inicializan usando alguna de las siguientes tres formas:

En la declaracin del arreglo:

int tabla[2][3]={51,21,26,18,20,30};
otra forma:
int tabla[2][3]={{51,21,26},{18,20,30}};
6

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

Mencionando los elementos por cada rengln y separndolos por comas o especificando
cada rengln en unas llaves. Si faltaran mencionar elementos, C++ llena los que faltaran
con ceros. De cualquier forma el arreglo anterior se almacenara as:
tabla
51
18

21
20

26
30

Inicializar en ceros todo el arreglo:

float ventas[12][5]={0.0};

En este ejemplo se define un arreglo de 12 renglones por 5 columnas. Se coloca entre llaves el valor
cero punto cero, por ser de tipo float (cero enteros, cero decimales).

Utilizando una estructura de repeticin como while, do-while o for:


for(i_filas=0; i_filas<numerodefilas; i_filas++)
for(j_columnas=0; j_columnas <numerodecolumnas; j_columnas ++)
Procesar elemento[i_filas] [j_columnas]=expresin;

En esta sentencia se requiere utilizar dos instrucciones repetitivas anidadas, se


recomienda que sean for, de tal forma que la primera controla los renglones y la segunda
o ms interna, controla las columnas. As cuando termine de llenar los elementos del
primer rengln, al hacer el recorrido por cada una de las columnas, se pasa al segundo
rengln, se inicia de nuevo el proceso de llenar todo el rengln y se pasa al tercero y as
sucesivamente hasta terminar toda la tabla.
Ejemplo.
Elaborar un algoritmo para guardar en la memoria las notas de 20 estudiantes de un
curso en las siete asignaturas que toman.
VARIABLES:
NOTA: Arreglo bidimensional que almacena las notas de los 20 estudiantes del curso en
las siete asignaturas.
J: Variable individual que se utiliza para modificar los sub-ndices que maneja las filas.
K: Variable individual que se utiliza para modificar los sub-ndices que maneja las
columnas.

MANUAL DE LGICA Y ALGORITMOS

PSEUDOCODIGO

DIAGRAMA DE FLUJO

Inicio
para J 0,19,1 hacer
para K 0,6,1 hacer
Leer NOTA[J],[K]
fin_para
fin_para
fin

/*Programa que guarda las notas de 20 estudiantes de un curso


en las siete asignaturas que toman */
#include<iostream>
using namespace std;
int main()
{
int J,K;
float NOTA[20][7];
//Captura de las notas
for(J=0;J<=19;J++)
{
cout<<"Escriba las siete notas del estudiante: "<<J+1<<endl;
for(K=0;K<=6;K++)
{
cin>>NOTA[J][K];
}
}
//Impresin de las notas
for(J=0;J<=19;J++)
{
cout<<endl<<J+1<<"
";
for(K=0;K<=6;K++)
cout<<NOTA[J][K]<<"
}
system("pause");
}

";

UNIVERSIDAD MILITAR NUEVA GRANADA

5.3.

CENTRO DE SISTEMAS

ARREGLOS MULTIDIMENSIONALES

C++ proporciona la posibilidad de definir arreglos de varias dimensiones o


multidimensionales, as por ejemplo: Podemos pensar en un arreglo tres dimensiones
como un cubo que se caracteriza por tener tres ndices, que se construye con la
dimensin vertical o filas, la dimensin horizontal o columnas y la dimensin de
profundidad o planos. Si lo comparamos con Excel, podramos decir que un dato tiene
direccin de columna, fila y hoja. Por ejemplo podemos tener las ventas de una cadena
de almacenes, donde las organizamos por sucursal, ciudad y ao.
Para inicializar un arreglo tridimensional o de ms dimensiones, obramos de la misma
manera que con las tablas, utilizando una estructura de repeticin for, para inicializar un
arreglo de tres dimensiones, as:
for(i_pagina=0; i_pagina<numerodepaginas; i_paginas++)
for(i_filas=0; i_filas<numerodefilas; i_filas++)
for(j_columnas=0; j_columnas <numerodecolumnas; j_columnas ++)
Procesar elemento[i_pagina] [i_filas] [j_columnas]=expresin;

MANUAL DE LGICA Y ALGORITMOS

Por ejemplo podemos utilizar una estructura de repeticin for, para inicializar un arreglo
de tres dimensiones de tamao 2 x 3 x 5 y que llenamos con unos(1):
/*programa que llena de unos un arreglo de tres dimensiones*/
#include<iostream>
using namespace std;
int main()
{
int v[2][3][5],k,i,j;
//INICIALIZACION DEL ARREGLO
for(k=0;k<2;k++)
for(i=0;i<3;i++)
for(j=0;j<5;j++)
v[k][i][j]=1;
//IMPRESION DE LOS DATOS
for(k=0;k<2;k++)
{cout<<"====="<<"DIMENSION "<<k<<" ==============="<<endl;
for(i=0;i<3;i++)
{for(j=0;j<5;j++)
cout<<v[k][i][j]<<"
";
cout<<"\n";}
}
system("pause");
}

Se declara un arreglo, de nombre v, de tamao 2 por 3 filas por 5 columnas.


La primera sentencia for, para el control de las 3 dimensiones del arreglo con el ndice k.
La segunda sentencia for externa, para el control de los renglones con el ndice i.
La tercera sentencia for interna, para el control de las columnas con el ndice ciclo j.

10

UNIVERSIDAD MILITAR NUEVA GRANADA

CENTRO DE SISTEMAS

EJEMPLOS:
EJEMPLO 1
Una esfera es lanzada horizontalmente desde diferentes alturas: 15,25,35,49,68,80,99;
calcular el tiempo que dura la esfera en el aire.

t=

2y
g

g=gavedad=9.8 m/s

/*Una esfera es lanzada horizontalmente desde diferentes alturas:


15,25,35,49,68,80,99; calcular el tiempo que dura la esfera en el aire.*/
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
double vector1[7]= {15,25,35,49,68,80,99};
double vector2[7];
int i;
for(i=0;i<7;i++)
{
vector2[i]=sqrt((2* vector1[i])/9.8);
}
cout<<"METROS"<<'\t'<<"TIEMPO DE CAIDA "<<'\n';
for(i=0;i<7;i++)
{
cout<<vector1[i]<<'\t'<<vector2[i]<<'\n';
}
system("pause");
}

11

MANUAL DE LGICA Y ALGORITMOS

EJEMPLO 2
Hacer un programa en C++ que muestre el nmero de pasajeros que lleva un avin.
Cada avin tiene 50 filas de asientos por 6 columnas. Para efectos de sistematizacin, un
asiento ocupado se representa mediante un uno y un asiento libre con un cero.
/*PROGRAMA QUE MUESTRA EL NUEMRO DE PASAJEROS QUE LLEVA UN AVION
EL AVION TIENE 50 FILAS DE ASIENTOS POR SEIS COLUMNAS
UN ASIENTO OCUPADO SE REPRESENTA MEDIANTE UN UNO Y UN ASIENTO LIBRE CON UN
CERO*/
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int avion [50] [6],o=0,d=0,i,j;
for (i=0; i<50; i++)
for(j=0; j<6; j++)
{
cout<<"INGRESE (1) SI EL ASIENTO ESTA OCUPADO Y (0) SI ESTA DESOCUPADO"<<endl;
cout<<"de la fila "<<i+1<<" columna "<<j+1<<endl;
cin>>avion[i] [j];
if (avion [i] [j] == 1)
o= o+1;
else if (avion[i][j]==0)
d=d+1;
}
for (i=0; i<50; i++)
{for(j=0; j<6; j++)
cout<<avion [i] [j]<<"\t";
cout<<endl<<endl;
}
cout<<"EL NUMERO DE ASIETOS OCUPADOS ES "<<o<<endl;
cout<<"EL NUMERO DE ASIENTOS LIBRES ES "<<d<<endl;
system("pause");
}

12

También podría gustarte