3.1 Vectores

Hasta ahora, vimos variables que pueden guardar un único valor. Vamos a empezar a ver ahora, variables que pueden guardar varios valores simultáneamente. La primera estructura de este tipo que vamos a ver, son los vectores.

Un vector es una serie de variables del mismo tipo que ocupan lugares consecutivos en la memoria. Por ejemplo, la declaración

        int v[10];

define un vector llamado v que guardará 10 valores enteros. Para acceder a cada uno de ellos individualmente, se coloca el número de posición entre los corchetes, empezando de cero. Así, el primero elemento del vector será v[0], el segundo v[1], etcétera hasta el décimo elemento que será v[9].


Por ejemplo, la instrucción.

     v[6] = v[3] + v[4];

toma el cuarto elemento del vector (v[3]) y el quinto elemento (v[4]), suma sus valores y guarda el resultado en el séptimo elemento (v[6]).

El siguiente programa, pide al usuario que ingrese una cantidad de elementos y calcula el promedio.



#define T 10
#include <iostream>
using namespace std;

int main()
{
       int lista[T];
       int i, cant, suma;
       double prom;
       do
       {
             cout << "ingrese cantidad de elementos: ";
           cin >> cant;
       }
       while (cant < 1 || cant >T);

       for (i=0; i<cant; i++)
       {
             cout << "Ingrese un elemento: ";
             cin >> lista[i];
       }
       suma = 0;
       for (i=0; i<cant; i++)
       {
             suma += lista[i];
       }
       prom = (double) suma/cant;
       cout << "El promedio es " << prom <<endl;
                          
       system ("pause");
       return 0;
}


El espacio de memoria que ocupará el vector se reserva antes de ejecutar el programa, por lo que la cantidad de elementos que tendrá el vector no puede ser una variable cuyo valor se defina durante la ejecución del programa. En este ejemplo, definimos una constante (o "macro") llamada T que eequivale a 10, con la directiva al preprocesador #define. Antes de compilar el programa, el preprocesador lee la instrucción #define y reemplaza todas las apariciones de T con el valor 10. Si más tarde se desea cambiar el tamaño del vector, aún se debe acceder al código fuente y modificar el valor de T a mano, pero este cambio es uno solo y en las primeras líneas del programa, lo que va a evitar errores producidos al olvidar cambiar el tamaño del vector en alguna instrucción.

Para que el usuario decida la cantidad de elementos del vector que quiere utilizar, le pedimos que ingrese dicho valor en la variable cant. La validación de dicha variable hecha con el ciclo do...while impide que el usuario elija un valor mayor a 10.
Es muy importante asegurarse de que el programa no intentará utilizar más elementos de los que el vector tiene definidos (posiciones 10, 11, 12, etc. de nuestro ejemplo): El C++ no realiza esta verificación y asignar dichos valores producirá errores imprevisibles.
Una vez que el usuario definió la cantidad de elementos que va a usar, utilizaremos siempre esa cantidad, sin importarnos más el tamaño real del vector.
Luego, en un primer ciclo, se le pide al usuario que ingrese cant valores, que serán guardados en las primeras cant posiciones del vector (desde lista[0] hasta lista[cant-1]). En cada iteración del ciclo, i toma un valor diferente, por lo que el valor ingresado en el cin se guarda en una posición diferente del vector.
El segundo ciclo acumula todos los números en la variable suma. No es necesario un contador para calcular el promedio, ya que la variable cant indica la cantidad de valores.

No hay comentarios:

Publicar un comentario