User: alciro    User
 

Programación en C++ Builder

Share |
 Arrays (matrices)
 Punteros
3. Ejemplo de clase en c++
8. Métodos de la clase AnsiString
 Proyectos en C++
 Packages, distribuir una aplicación sin instalación
 Ordenación por intercambio o burbuja
 Funciones de cadenas de caracteres string.h

Arrays (matrices)

Un array o matriz es una colección de elementos dados del mismo tipo que se identifican por medio de un índice. Los elementos comienzan con el índice O. Los arrays se pueden declarar de cualquier tipo de dato en C

Declaración de arrays

NombreTipo NombreVariable[nº de elementos];

Una matriz de una dimension se suele denominar vector.
Ejemplos de arrays unidimensionales o vectores:

int Lista[5];		// array de cinco enteros
char Nombres[10];	// array de 10 caracteres

Asignación de memoria

La memoria asignada a un array viene determinada por el tipo de datos y el número de elementos del array.

Bytes = Bytes(tipo) x nº de elementos

Para el ejmplo anterior (int Lista[5];) ele número de elementos es:

Int(4bytes) x 5 = 20 Bytes 

Utilización

Para trabajar con los arrays se han de aplicar los mismos conceptos que al resto de variables.

Lista[0] = 300;		// Asignación de una constante a un elemento del vector
Lista[1] = 50;
Lista[2] = Lista[0]+ Lista[1];	// Suma de elementos, el resultado se guarda en otro elemento del array

Declaración y asignación

int vector1[] = {-200, -100, 0, 100, 200};	// Matriz vector1 de tipo entero con 5 elementos
int a[3] = {5, 10, 15};				// Matriz a de tipo entero con 5 elementos
char cad[5] = {'a', 'b', 'c', 'd', 'e'};	// Matriz vector1 de char entero con 5 elementos

Las tres siguientes definiciones son equivalentes:

char saludo[5] = "hola";
char saludo[] = "hola";
char saludo[5] = {'h', 'o', 'l', 'a', '\0'};

Cuando se realiza una declaración y asignación simultánea se puede omitir la dimensión ya que el compilador la puede determinar automáticamente en base al número de elementos, si se indica la dimensión esta ha de coincidir con el número de elementos de la declaración.


Arrays multimensionales

NombreTipo NombreVariable[n1] [n2]... [nx];

Son aquellos arrays de más de una dimensión. Un array puede tener múltiples dimensiones, pero un array con más de 2 o 3 dimensiones es poco operativo.  Una matriz de dos dimensiones se suele denominar tabla.

int tabla[3][5];		// Array de 15 elementos (60 bytes)
int ArrayMulti[4][10][3];	// Array de enteros 4 x 10 x 3
float tablaR[2][3]; 		// Array de reales de 2 X 3 = 6 elementos

Utilización

tabla[0][0] = 100;	// Asignación de una constante el elemento [0][0]
x = tabla[0][0] + tabla[0][1];	// Suma de elementos, el resultado se guarda en la variable x

Declaración y asignación

int tabla[2][3] = {{1, 2, 3}, {3, 4, 5}}; // Matriz tabla de dos dimensiones de tipo entero con 6 elementos


Consideraciones

int vector2[5];	// Declaración de un vector de 5 de 5 elementos
...
Vector2[5]=10;	// Asignación al elemento 6 (vector2[5])

• En el caso anterior se produce un error al escribir en un elemento que no existe, al acceder al vector2 con el índice 5 (elemento 6) inexistente. Como resultado de esta acción se sobre escribe en un lugar indeterminado que no está reservado para la variable en cuestión, esto puede producir errores indeterminados en el funcionamiento del programa. Aunque el compilador no informe del error ya que la sintaxis está correcta, se está provocando un error que puede tener graves consecuencias.

• El primer elemento de un array tiene el índice 0 y el último elemento dimensión-1.

• El compilador ha de conocer siempre el número de elementos para reservar la memoria necesaria. No se puede declarar un array con una variable para indicar la dimensión. En C++ para poder dimensionar un array en tiempo de ejecución o disponer un array dinámico se han de utilizar las técnicas de acceso dinámico a datos.

int dimension = 10;
int vertor3[dimension];	// ERROR, no permitido

• Las variables tienen el mismo trato que las variables temporales, se crean en el stack, por lo que es conveniente trabajar con arrays de pequeñas dimensiones. Si es necesario trabajar con gran cantidad de datos y los arrays son grandes se ha de trabajar en el heap, mediante las técnicas de acceso dinámico a datos, de esta forma podemos tener arrays dimensionables.

• Los arrays no se pueden pasar como parámetros a funciones, se han de tratar con punteros y el paso de parámetros por referencia.

• Las funciones no pueden devolver arrays.

• No está permitida la asignación entre arrays. Para asignar un array a otro, se debe escribir el código para realizar las asignaciones elemento a elemento.


Ejemplos:

1.- La forma natural de trabajar con los arrays es utilizar variables en los índices. El siguiente ejemplo crea un vector de 10 elemento y los llena con números con ordenación ascendente desde el 5.

int vector1[10];	// Declaración de un vector de 10 elementos
int dato = 5;		// Variable dato con el valor inicial

for(int n=0; n<10; n++){	// Iteración desde el índice 0 a 9
	vector1[n]=dato;	// Asignación del dato al elemento del vector
	dato+=1;		// Incrementar dato
}

2.- Llenar un vector con letras minúsculas ASCII orden ascendente con inicio en 'a'.

char vector1[5];	// Declaración de un vector de 5 elementos
char letra = 'a';	// Variable dato con el valor inicial

for(int n=0; n<5; n++){	// Iteración desde el índice 0 a 4
	letra+=n;		// Incrementar letra
	vector1[n]=letra;	// Asignación del dato al elemento del vector
}

3.- Realizar una copia de un vector de tipo entero en otro multiplicando todos los elementos por 5.

int vector1[10]={2,15,30,45,56,-45,0,7,-23,150};	// Vector de 10 elementos con asignación
int vector2[10];	// Declaración de un vector de 10 elementos

for(int n=0; n<10; n++){	 // Iteración desde el índice 0 a 9
	vector2[n]= vector1[n]*5;	// Asignación del dato al elemento del vector2 el producto del vector1*5
}
Loading

copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |