Está en la página 1de 10

DEPARTAMENTO DE TECNOLOGÍAS

DEL CONOCIMIENTO

7. ALMACENAMIENTO DE DATOS EN ARREGLOS


(ARRAYS)
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, además 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 características, es decir, son de la misma clase (numérica o
alfanumérica); y además tienen el mismo tamaño, luego es un conjunto finito y ordenado
de elementos homogéneos.
El tipo de dato almacenado en un arreglo puede ser cualquiera: numérico, carácter o lógico.
Por ejemplo, se puede almacenar en un arreglo los nombres de los estudiantes de un curso,
la temperatura mínima registrada en una ciudad durante una semana o las coordenadas
de una figura en el plano cartesiano.
Los arreglos pueden ser: unidimensionales, bidimensionales o multidimensionales. A los
arreglos de una dimensión se denominan listas o vectores, a los de dos dimensiones se les
llama tablas o matrices, a los de más dimensiones se les denomina arreglos de n
dimensiones.

7.1 ARREGLOS UNIDIMENSIONALES

Los arreglos de una dimensión, llamados también listas o vectores, permiten almacenar datos
que tienen las mismas características. Se caracterizan por tener un solo subíndice.
Por ejemplo: nombres, sueldos, edades, temperatura, talla, etc.
En general se puede visualizar un arreglo de una dimensión de la siguiente forma:

NOMBRE: talla
POSICION: 0 1 2 3 4 5 6 7 8 9
CONTENIDO 1.65 1.35 1.45 1.65 1.23 1.66 1.42 1.50 1.75 1.60

ELEMENTO talla[0] talla[1] . . . 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.

Si el nombre del arreglo es a, entonces a[0] es el nombre del elemento que está en la
posición 1, a[1] es el nombre del elemento que está en la posición 2. En general, el
elemento i-ésimo, a[i], está en la posición i+1. Estos números se denominan índices o
subíndices del arreglo.

1
UNIVERSIDAD MILITAR NUEVA GRANADA DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO

DECLARACIÓN 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 precaución de mencionar el número de elementos que
contendrá el arreglo entre los corchetes cuadrados:

Sintaxis de la instrucción:

Tipo_de_dato nombre_del_arreglo[número 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 ocuparía 20 bytes de memoria.

Se puede declarar uno o más arreglos del mismo tipo en una misma instrucción así:

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

INICIALIZACIÓN 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 declaración 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 asumiría con ceros; por el contrario, si sobran elementos,
se produce un error.

− Inicializar en ceros todo el arreglo:

int nota[8]={0};

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

− Utilizando una estructura de repetición 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
2
UNIVERSIDAD MILITAR NUEVA GRANADA DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO

C2: Cantidad de menores de edad

CODIGO EN C++

#include<iostream>
using namespace std;

int main()
{
int EDAD[10], c1=0, c2=0,x;
cout<<"Escriba edad de los estudiantes :";
for(x=0; x<10; x++)
cin>>EDAD[x];
cout<<"\n\n";
for(x=0; x<10; x++)
{
cout<<" "<<EDAD[x]<<" ";
if(EDAD[x] >=18)
c1++;
else
c2++;
}
cout<<"\nMayores de edad "<<c1;
cout<<" Menores de edad "<<c2;
cout<<endl;
system("pause");
return 0;
}

Salida en C++

7.2. ARREGLOS BIDIMENSIONALES

Los arreglos de dos dimensiones, llamados también 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.

3
UNIVERSIDAD MILITAR NUEVA GRANADA DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO

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:

Cada elemento representa el código de un trabajador cualquiera. Si a este conjunto de


códigos 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 números separados por una coma y encerrados entre paréntesis (subíndices). El
primer número 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

7.2.1. DECLARACIÓN DE UNA TABLA EN C++


Los arreglos de dos dimensiones se deben declarar antes de ser utilizados, con la
precaución de mencionar el número de elementos: renglones y columnas, entre
corchetes cuadrados.

Sintaxis de la instrucción:

Tipo_de_dato nombre_del_arreglo[número_de_renglones][número_de_columnas]
 Por ejemplo, para crear una tabla de tres renglones por diez columnas, de tipo numérico
real y de nombre datos se escribe:

float datos[3][10];

7.2.2. INICIALIZACIÓN DE UNA TABLA EN C++

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

− En la declaración del arreglo:

in t tabla[2][3]={51,21,26,18,20,30};

Otra forma:

in t tabla[2][3]={{51,21,26},{18,20,30}};

4
UNIVERSIDAD MILITAR NUEVA GRANADA DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO

Mencionando los elementos por cada renglón y separándolos por comas o especificando
cada renglón en unas llaves. Si faltaran mencionar elementos, C++ llena los que faltaran
con ceros. De cualquier forma, el arreglo anterior se almacenaría así:

Tabla
51 21 26
18 20 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 repetición como while, do-while o for:

for(filas=0; filas<numerodefilas; filas++)


{
for(columnas=0;columnas<numerodecolumnas; columnas ++)
{

Procesar elemento[filas] [columnas]=expresión;

}
Salto de Línea;
}

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 más interna, controla las columnas. Así cuando termine de llenar los
elementos del primer renglón, al hacer el recorrido por cada una de las columnas, se
pasa al segundo renglón, se inicia de nuevo el proceso de llenar todo el renglón 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 (0-5) de los 10 estudiantes del curso
en las seis 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.

5
UNIVERSIDAD MILITAR NUEVA GRANADA DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO

CODIGO EN C++

#include<iostream>
using namespace std;
int main()
{
int j, k;
float nota[10][6];
//Captura de notas
for (j = 0; j < 10; j++)
{
cout << endl << endl;
cout << "\tEstudiante No. " << j + 1 << ": ";
cout << endl << endl;
for (k = 0; k < 6;)
{
cout << " Ingresar La Nota No. " << k + 1 << ": ";
cin >> nota[j][k];
if (nota[j][k] >= 0 && nota[j][k] <= 5.0)
k++;
else
cout << "\n\n\t=== Nota no Valida ===\n\n";
}
}
system("cls");
//Impresion de Notas
cout << "\tNotas Ingresadas";
cout << endl << endl;
for (j = 0; j < 10; j++)
{
cout << " => Estud No." << j + 1 << ": Notas ";
for (k = 0; k < 6; k++)
cout << nota[j][k] << " ";
cout << endl;
}
cout << endl;
system("pause");
return 0;
}

Salida en C++

7.3. 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 dimensión
vertical o filas, la dimensión horizontal o columnas y la dimensión de profundidad o planos.
6
UNIVERSIDAD MILITAR NUEVA GRANADA DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO

Si lo comparamos con Excel, podríamos decir que un dato tiene dirección de columna, fila
y hoja. Por ejemplo, podemos tener las ventas de una cadena de almacenes, donde las
organizamos por sucursal, ciudad y año.
Para inicializar un arreglo tridimensional o de más dimensiones, obramos de la misma
manera que con las tablas, utilizando una estructura de repetición for, para inicializar un
arreglo de tres dimensiones, así:

for(pagina=0; pagina<numpaginas; paginas++)


{ for(filas=0; filas<numfilas; filas++)
{ for(columnas=0; columnas <numcolumnas; columnas ++)
{
Procesar elemento[i_pagina][i_filas][j_columnas]=expresión; }
}

Por ejemplo:

Se declara un arreglo, de nombre v, de tamaño 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.

CODIGO EN C++
#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 << "\t===" << "DIMENSION " << k << " ===" << endl;
for (i = 0; i<3; i++)
{
for (j = 0; j<5; j++)
{
cout << v[k][i][j] << " ";
}
cout << "\n";
}
cout << "\n";
}
system("pause");
return 0;
}

7
UNIVERSIDAD MILITAR NUEVA GRANADA DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO

Salida en C++

EJEMPLOS:

• EJEMPLO 1: Una esfera es lanzada horizontalmente desde siete


diferentes alturas: 15,25, 35, 49, 68, 80,99.
Calcular el tiempo que dura la esfera en el aire, dependiendo de la altura de la que fue
lanzada.

CODIGO EN C++

#include <iostream>
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 " << endl;
for (i = 0; i<7; i++)
{
cout << " " << vector1[i] << "\t " << vector2[i] << '\n';
}
system("pause");
return 0;
}

8
UNIVERSIDAD MILITAR NUEVA GRANADA DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO

Salida en C++

• EJEMPLO 2: Hacer un programa en C++ que muestre el número de pasajeros que


lleva una avioneta. La avioneta tiene 5 filas de asientos por 4 columnas. Para efectos
de sistematización, un asiento ocupado se representa mediante un uno y un asiento
libre con un cero.

CODIGO EN C++

#include <iostream>
using namespace std;
int main()
{
int avion[5][4];
int ContAsiLib = 0;
int ContAsiOcu = 0;
cout << " Ingresar Estado Asiento (0: Libre, 1: Ocupado): ";
cout << endl << endl;
for (int i = 0; i<5; i++)
{
for (int j = 0; j<4;)
{
cout << " => Fila[" << i << "] Columna[" << j << "]: ";
cin >> avion[i][j];
if (avion[i][j] == 0)
{
ContAsiLib++;
j++;
}
else
{
if (avion[i][j] == 1)
{
ContAsiOcu++;
j++;
}

else
cout << "\n\t=== Estado Ingresado no Valido ===\n\n";
}
}
cout << endl;
}
system("cls");
cout << "\t=== Estado de Asignaci\242n de Asientos en la Avioneta === ";
cout << endl << endl;
for (int i = 0; i<5; i++)
9
UNIVERSIDAD MILITAR NUEVA GRANADA DEPARTAMENTO DE TECNOLOGÍAS DEL CONOCIMIENTO

{
for (int j = 0; j<4; j++)
cout << " " << avion[i][j];
cout << endl;
}
cout << endl << endl;
cout << " => N\243mero de Asientos Ocupados: " << ContAsiOcu << endl;
cout << " => N\243mero de Asientos Libres: " << ContAsiLib << endl;
cout << endl;
system("pause");
return 0;
}

Salida en C++

10

También podría gustarte