Post on 17-Dec-2015
description
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
1
2. ALMACENAMIENTO DE DATOS EN ARREGLOS
(ARRAYS)
OBJETIVO DE LA UNIDAD Utilizar datos compuestos o (estructurados) en arreglos para el almacenamiento de
informacin.
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 de 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 del mismo
tipo (numrico, alfanumrico o lgico) y tienen el mismo tamao, se dice por tanto que
es un conjunto finito y ordenado de elementos homogneos.
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, bidimensionales o de ms dimensiones. A
los arreglos de una dimensin se denominan vectores, a los de dos dimensiones se les
llama tablas o matrices, a los de ms dimensiones se les denomina arreglos de n
dimensiones.
2.1 ARREGLOS UNIDIMENSIONALES Los vectores se caracterizan por tener un solo subndice [i] e indica la posicin del dato
en el vector. En los arreglos unidimensionales almacenamos nombres, sueldos, edades,
temperatura, talla, etc.
En general se puede visualizar un vector de la siguiente forma:
NOMBRE: talla POSICION: 0 1 2 3 4 5 6 7 8 9
CONTENIDO:
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.
En general, el elemento i-simo, a[i], est en la posicin i+1. Estos nmeros se
denominan ndices o subndices del arreglo.
MANUAL DE PROGRAMACIN EN C++
2
2.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.
Columna 0 Columna 1 Columna
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:
Columna 0 Columna 1 Columna 2 Columna 3
Fila 0 900 600 755 280
Fila 1 400 450 615 715
Fila 2 300 680 420 690
Fila 3 250 550 150 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 encerrados entre parntesis cuadrados (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
2.3 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 un vector 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 4 bytes, de modo que un arreglo de diez enteros ocupara
40 bytes en memoria.
As mismo se puede declarar uno o ms arreglos del mismo tipo en una misma instruccin as:
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
3
float b[10], c[7], d[4];
Para asignar los datos al vector 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:
double n[8]={0};
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
MANUAL DE PROGRAMACIN EN C++
4
X: Sub-ndice
C1: Cantidad de mayores de edad
C2: Cantidad de menores de edad
CDIGO 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
using namespace std;
int main()
{
int EDAD[10],C1=0,C2=0;
cout
5
MANUAL DE PROGRAMACIN EN C++
K: Variable individual que se utiliza para modificar los sub-ndices que maneja las
columnas.
CDIGO EN C++:
/*Programa que guarda las notas de 20 estudiantes de un curso en las
siete asignaturas que toman */
#include
Using namespace std;
int main()
{
int J,K;
float NOTA[20][7];
//Captura de las notas
for(J=0;J
6
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
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
7
MANUAL DE PROGRAMACIN EN C++
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.
Ejemplo 4.
Una esfera es lanzada horizontalmente desde diferentes alturas: 15, 25, 35, 49, 68, 80
y 99. Calcular el tiempo que dura la esfera en el aire. , donde g=gravedad=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 #include using namespace std; int main() { double vector1[7]= {15,25,35,49,68,80,99}; double vector2[7]; int i; for(i=0;i
8
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
/*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 #include using namespace std; int main() { int avion [50][6],o=0,d=0,i,j; for (i=0; i
9
MANUAL DE PROGRAMACIN EN C++
En la opcin 2, llene un vector de 8 posiciones con nmeros aleatorios.
A continuacin defina una tabla de 5 filas por 8 columnas y llene la
tabla con los nmeros generados
en el vector para cada una de las columnas. Imprima ambos arreglos.
La opcin cero es para terminar. Por lo tanto el programa deber mostrar
el men hasta tanto no se digite cero.
programador: Jessica Jimenez 2902200 */
#include
#include
#include
#include
using namespace std;
void lanzamientoverticalhaciabajo(double);
void arreglos();
double vf,vo,t,g=9.8,d;
int main()
{ int opc;
do{ cout
10
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
cout
11
MANUAL DE PROGRAMACIN EN C++
Nombre del Cliente:
Nombre del Artculo:
Cantidad Artculos:
Valor Unitario:
Tipo Artculos:
Valor Pagar por la Compra:
Programador: Profesor Luis Eduardo Perez
*/
#include
#include
using namespace std;
void recargo(int [3], double [3], double [3]);
int main()
{
int tipo[3];
double cantidad[3];
double valorunitario[3];
string nombre[3];
string articulo[3];
cout
12
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
cout
13
MANUAL DE PROGRAMACIN EN C++
2.5 ARREGLOS COMO PARMETROS DE FUNCIONES En C++ todos los arreglos se pasan por referencia. Esto significa que cuando se pasa un
arreglo a una funcin, se pasa realmente solo la direccin de la celda de memoria donde
comienza el arreglo.
La funcin puede cambiar el contenido del arreglo accediendo directamente a las celdas de memoria en donde se almacena los elementos del arreglo. As, aunque el arreglo se pasa
por valor, sus elementos se pueden cambiar como si se hubieran pasado por referencia.
Para pasar un arreglo completo como parmetro a una funcin solo se manda el
nombre del arreglo sin corchetes e ndices, en l a funcin que recibe solo se
declara un arreglo del mismo tipo y se puede usar el mismo o diferente nombre
del arreglo sin corchetes e ndices.
14
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS
Sin embargo es conveniente aclarar, que a diferencia de las variables, C++ no genera
una nueva variable en memoria ni tampoco copia los datos al arreglo que recibe, en
su lugar el compilador sigue usando los datos que estn en el arreglo original, es por
esta razn que cambios que se le hagan a los datos del arreglo que recibe realmente
se estn haciendo al arreglo original como lo muestra el siguiente ejemplo: #include
using namespace std;
#include
void proc1(int vector[]);
int main()
{
//creando arreglo y cargandolo
int lista[6]= {20,21,22,23,24,25};
// envindolo a la funcin, observe que se manda sin los corchetes []
proc1(lista);
// Se imprimen los datos
for(int reng=0; reng
15
MANUAL DE PROGRAMACIN EN C++
RESUMEN
- Los arreglos son un conjunto de variables que en la memoria ocupan posiciones
continuas de almacenamiento y que tienen un mismo nombre.
- Los vectores se caracterizan por tener un solo subndice [i] e indica la posicin
del dato en el vector.
- Los arreglos de dos dimensiones, llamados tambin tablas o matrices, se
caracterizan por tener dos ndices.
- 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.
- C++ proporciona la posibilidad de definir arreglos de varias dimensiones o
multidimensionales.
- En C++ todos los arreglos se pasan por referencia. Esto significa que cuando se
pasa un arreglo a una funcin, se pasa realmente solo la direccin de la celda de
memoria donde comienza el arreglo.
- Para pasar un arreglo completo como parmetro a una funcin solo se manda
el nombre del arreglo sin corchetes e ndices.