Archivo de la etiqueta: vectores

Vectores en C: Lo que hay que saber

En este artículo veremos un resumen de la terminología y las operaciones básicas que utilizamos al trabajar con vectores. Todos los ejercicios y temas que veamos relativos a vectores en adelante, estarán basados en estos conceptos. ¡Así que presten atención!

Definiciones

  • Vector: Es una estructura de datos que permite contener una cantidad fija (tamaño) de datos (elementos o valores) del mismo tipo bajo un mismo nombre, diferenciadas por un índice o posición.
  • Tamaño / Dimension: Cantidad máxima de elementos que puede contener un vector.
  • Indice / Posición: Numero que identifica a uno de los valores que contiene el vector.
  • Elemento / Valor: Valor contenido por el vector en una determinada posición.
  • Inicializar: Acción de asignar valores iniciales a un vector. Normalmente implica recorrer el vector para asignar los valores.
  • Recorrer: Acción de pasar por todas las posiciones de un vector (por medio de un cíclo, tipicamente for)
  • Ordenar: Acción de cambiar las posiciones de los elementos del vector para organizarlos de acuerdo a un criterio de ordenamiento (De mayor a menor, de menor a mayor, de acuerdo a otro vector indice, etc)

Sintaxis:

Se declara como:

tipo nombre[tamaño]; //Ej: int puntajes[10];

Se usa como:

nombre[posicion]=valor; //Ej: puntajes[5]=9;

Se consulta como:

nombre[posicion] // Ej: if(puntajes[5] > 10) printf(“El jugador 5 tiene más de 10 puntos”);

Facts:

  • El tamaño siempre es fijo y constante. Siempre en la declaración debo utilizar un valor constante para el tamaño (constante numérica, o macro).
  • Las posiciones del vector se numeran a partir del 0. Así un vector declarado con tamaño 10 tendrá sus elementos numerados con indices del 0 al 9.
  • Al igual que las variables, los vectores deben ser inicializados ya que pueden contener basura.

Ejemplos:

//Constantes (Macros)
#define MAX_USUARIOS 20

//Declaraciones
int vJugadores[10]; //Vector de enteros de 10 posiciones con nombre vJugadores
int vUsuarios[MAX_USUARIOS]; //Vector de enteros de MAX_USUARIOS posiciones. Se utiliza una macro para definir el numero de posiciones de forma que se pueda cambiar fácilmente.
float vfCoordenadas[3]; //Vector de tipo float de tres posiciones.
float vfCoordenadas2[3]={1.0, 0.0, -2.01}; //Declaro un vector de tres posiciones e inicializo los valores
int i,iMax,iPosMax;
int vAcumuladores[1000];

//Uso:
vJugadores[0] = 3; //Seteo el valor 3 la posición 0
vJugadores[a] = 1; //Seteo en la posición a, el valor 1, donde a es una variable entera. (Si a=1
vJugadores[2] = vJugadores[0]; //Seteo en la posición 2, el valor de la posición 0.

//Recorrido
/* Normalmente se recorren los vectores con un ciclo for, utilizando el contador del ciclo como índice. A continuación algunos ejemplos */

for(i=0;i<MAX_USUARIOS;i++){ //Imprime todos los elementos del vector:
	printf(“El usuario %d tiene el valor %d”,i,vUsuarios[i]);
}

//Inicializacion
/*Los vectores, al igual que las variables, deben ser inicializados antes de usarlos para limpiar basura que puedan llegar a contener. Si el vector es muy grande, la sintaxis expuesta en las declaraciones puede resultar poco práctica. Por ello, lo que se suele hacer es recorrer el vector y asignar su valor inicial.*/

for(i=0; i<1000;i++){ //Inicializo todas las posiciones del vector con el valor 0.
	vAcumuladores[i]=0; 
}

//Maximos y minimos

iPosMax=0;
for(i=1;i<3;i++){
	if(vfCoordenadas2[i]>vfCoordenadas2[iPosMax]){
		iPosMax=i;
	}
}
printf(“La coordenada más grande es %d, con el valor %d”,vfCoordenadas2[iPosMax],iPosMax);