Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5.
CENTRO DE SISTEMAS
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.
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.
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:
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 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.
int n[8]={0};
2
CENTRO DE SISTEMAS
En este caso cada uno de los 8 elementos del arreglo n asume valor 0.
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
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
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]
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
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];
int tabla[2][3]={51,21,26,18,20,30};
otra forma:
int tabla[2][3]={{51,21,26},{18,20,30}};
6
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
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).
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
";
5.3.
CENTRO DE SISTEMAS
ARREGLOS MULTIDIMENSIONALES
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");
}
10
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
11
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