Escolar Documentos
Profissional Documentos
Cultura Documentos
INTRODUCCIN
1. Definicin
Finita: todo arreglo tiene un lmite; es decir, se debe determinar cul ser el
nmero mximo de elementos que formarn parte del arreglo.
Homognea: todos los elementos de un arreglo son del mismo tipo. Es decir,
todos enteros, todos booleanos, etc.
Ordenada: Se puede determinar cul es el primero, el segundo, el tercer
elemento, etc.
Asimismo, un arreglo puede tener una o ms dimensiones para almacenar los datos.
Observe la figura 1.1
Figura 1.1
Representacin grfica de las dimensiones de una arreglo
RECUERDA
Desde el punto de vista tcnico una variable simple es un espacio de memoria, que
opera bajo un determinado nombre, donde se puede almacenar un solo dato a la
vez; mientras que un arreglo es un conjunto de espacios de memoria identificados
por un mismo nombre.
void main()
{
int arregloUd[5]; // Arreglo unidimensional que permite
almacenar hasta 5 nmeros enteros
bool arregloUd[10]; // Arreglo unidimensional que permite
almacenar hasta 10 datos lgicos
int arregloBd[4][3]; // Arreglo bidimensional que permite
almacenar hasta 12 nmeros enteros
char arregloTd[3][2][4]; // Arreglo tridimensional que permite
almacenar hasta 24 caracteres
// Arreglo de punteros
// a. Arreglo de punteros simple
char *das[7] = {Lun, Mar, Mie, Jue, Vie, Sab, Dom};
Figura 1.2
Representacin abstracta de un arreglo
Arreglo
{
Instancias
Conjunto de pares de la forma (ndice, valor)
Operaciones
get(ndice) : Retorna el valor del par cuyo ndice es
proporcionado.
set(ndice, valor) : Agregar un par al arreglo en la posicin del ndice
proporcionado. Si existe un valor en esa posicin
ser sobrescrito.
}
TemperaturaMax = {(0, 82), (1, 79), (2, 85), (3, 92), (4, 88), (5, 89), (6, 91)}
#include "iostream"
using namespace std;
void main()
{
// Declarar un arreglo unidimensional de enteros con capacidad de
5 elementos
int arregloU[5];
// Guardar los enteros 14 y 23 en las dos primeras posiciones del
arreglo
arregloU[0] = 14;
arregloU[1] = 23;
// Guardar nmeros digitados por el usuario en las posiciones 3,
4 y 5 del arreglo
cout<<"Ingrese el tercer elemento: ";cin>>arregloU[2];
cout<<"Ingrese el cuarto elemento: ";cin>>arregloU[3];
cout<<"Ingrese el quinto elemento: ";cin>>arregloU[4];
// Imprimir los elementos del arreglo
cout<<endl;
cout<<"Elementos del arreglo"<<endl;
cout<<"---------------------"<<endl;
cout<<"Primer elemento: "<<arregloU[0]<<endl;
cout<<"Segundo elemento: "<<arregloU[1]<<endl;
cout<<"Tercer elemento: "<<arregloU[2]<<endl;
cout<<"Cuarto elemento: "<<arregloU[3]<<endl;
cout<<"Quinto elemento: "<<arregloU[4]<<endl;
system("pause");
}
Programa 1.2
Por su parte el programa 1.3 implementa los mtodos get() y set() propiamente, tal
como se describi en la representacin abstracta:
#include "iostream"
using namespace std;
void main()
{
int valor;
// Registrar los elementos del arreglo
for (int i=0; i<CapacidadMax; i++)
{
cout<<"Ingrese el elemento["<<i<<"]: ";cin>>valor;
set(i,valor);
}
system("pause");
}
Programa 1.3
En trminos generales:
Figura 1.3
Pasos para ordenar los elementos de un arreglo
Paso 1 Paso 2
Paso 3 Paso 4
En cdigo C++:
#include "iostream"
using namespace std;
void imprimirArreglo()
{
cout<<endl;
cout<<"Valores del arreglo"<<endl;
cout<<"-------------------"<<endl;
for (int i=0; i<MAX; i++)
cout<<"Elemento ["<<i<<"]: "<<arreglo[i]<<endl;
}
void main()
{
int valor;
int valorMAX; // Valor mximo detectado
int posMAX; // Posicin del valor mximo detectado
//Registrar datos
cout<<endl;
cout<<"Ingresando valores al arreglo"<<endl;
cout<<"-----------------------------"<<endl;
for (int i=0; i<MAX; i++)
{
cout<<"Arreglo["<<i<<"]: ";
cin>>arreglo[i];
}
// Imprimir arreglo
imprimirArreglo();
// Imprimir arreglo
imprimirArreglo();
system("Pause");
}
Programa 1.4
#include "iostream"
using namespace std;
// Funcin de bsqueda
int buscar(int datoBuscado)
{
int indice=-1;
for (int i=0; i<MAX; i++)
if (arreglo[i] == datoBuscado)
indice = i;
return indice;
}
void main()
{
int DatoABuscar;
//Registrar datos
cout<<endl;
cout<<"Ingresando valores al arreglo"<<endl;
cout<<"-----------------------------"<<endl;
for (int i=0; i<MAX; i++)
{
cout<<"Arreglo["<<i<<"]: ";
cin>>arreglo[i];
}
cout<<endl;
cout<<"Especifique el valor que desea buscar: ";cin>>DatoABuscar;
if (buscar(DatoABuscar)==-1)
cout<<"Dato no encontrado"<<endl;
else
cout<<"El dato se encuentra en la posicin
"<<buscar(DatoABuscar)<<endl;
system("Pause");
}
Programa 1.5
RECUERDE
El ndice de un arreglo multidimensional est representado por varios nmeros
en forma de coordenadas.
Figura 1.5
Secuencia de mapeo por filas
[0] [1]
[0] (0,0) (0,1)
[1] (1,0) (1,1)
[2] (2,0) (2,1)
Funcin de mapeo
Por ejemplo:
a. (2,1) = 2(2) + 1 = 5
b. (0,1) = 0(1) + 1 = 1
c. (1,1) = __(__) + ___ = ___
d. (2,0) = __(__) + ___ = ___
Figura 1.6
Secuencia de mapeo por columnas
[0] [1]
[0] (0,0) (0,1)
[1] (1,0) (1,1)
[2] (2,0) (2,1)
Funcin de mapeo
Por ejemplo:
#include <iostream>
using namespace std;
// Nmero de filas
const int NroFilas = 4;
// Nmero de columnas
const int NroColumnas = 3;
// Declaracin del arreglo
int arreglo[NroFilas * NroColumnas];
// PROGRAMA PRINCIPAL
void main()
{
// Asignacin de valores
set(0,1,5);
set(1,1,7);
set(2,0,10);
// Lectura de valores
cout<<get(0,1)<<endl;
cout<<get(1,1)<<endl;
cout<<get(2,0)<<endl;
system("Pause");
}
Programa 1.6
5. Arreglo de arreglos.
Matrices bidimensionales basadas en punteros
Figura 1.7
Estructura en memoria de un arreglo bidimensional basado en punteros
[0] [1] [2] [3]
X[0] D1 D1
X[1] D2 D2
X[2] D3 D3
Para que esto sea posible, deber declarar un array contenedor de tipo puntero
doble (ver numeral 2), y a continuacin almacenar en cada casilla la direccin de
memoria de cada subarreglo. El programa 1.7 muestra como realizarlo.
#include "iostream"
using namespace std;
// Programa principal
void main()
{
// Declarar el arreglo contenedor
int **arrayBidimensional = new int *[NroFilas];