TEORÍA
Vectores (Matrices o arrays)
Los vectores nos permiten almacenar una serie de datos en una única variable. Son como una cajonera en cada uno de cuyos cajones podemos guardar un dato. Todos los datos deben ser del mismo tipo.
Por ejemplo, si queremos almacenar veinte números, con lo que sabemos hasta
ahora habríamos diseñado algo similar a:
…
{ int numero1,numero2,numero3,numero4…;
printf(“Dame el primer número”);scanf(“%d”,&numero1);
printf(“Dame el segundo número”);scanf(“%d”,&numero2);
…
En vez de ello podemos, usando un vector, llamar a la
variable vector, por ejemplo, numeros, y referirnos al numero[0], al numero[1],
al numero[2],, ya sea para introducirlos o, posteriormente, para operar con
ellos o mostrarlos en pantalla.
Un vector se define de forma parecida a los demás tipos de
variables: indicamos su tipo, el nombre que le damos, y señalamos a
continuación, entre corchetes, el número de elementos que en él vamos a
almacenar.
Sintaxis: tipo nombrevector[nº de posiciones]; donde tipo es cualquiera de los tipos de datos conocidos: entero (int), real (float), o carácter (char).
- Para introducir un valor en una determinada posición, indicamos esta entre corchetes.
En el ejemplo se observa que la primera posición es siempre la 0 y no la 1.
- Podemos definir y asignar valores
Cuando el número de elementos es elevado, lo que se hace es ir introduciendo los datos, o visualizándolos, con la ayuda de un bucle, que haga que una variable (índice), vaya tomando los valores de cada una de las posiciones del vector. Los arrays pueden ser de más de una dimensión. Podemos imaginar un array bidimensional como una tabla con filas y columnas. Por ejemplo, un array bidimensional para introducir los días de la semana sería de 9 columnas y siete filas, una para cada día. La definición sería:
char semana[7][9]={"lunes","martes","miércoles","jueves","viernes","sábado","domingo"};

ORDENACIÓN DE ARRAYS
Método de la burbuja.
Consiste en ir comparando, desde el primero al penúltimo, cada posición del array con la siguiente. Si están ordenados, se compara el último de los dos con el que le sigue, y así sucesivamente. Al llegar a una pareja que esté desordenada, se intercambian sus valores y se continúa. Cuando llegamos a comparar el penúltimo con el último, si alguna pareja estaba desordenada y hubo que cambiar sus valores, se empieza de nuevo todo el proceso. Se da por concluida la ordenación cuando se recorre toda la lista y no hemos encontrado ninguna pareja desordenada.
ARRAYS DE CARACTERES
Se declaran se forma similar a los otros tipos de arrays: char nombrevariable[nºposiciones];
El compilador introduce automáticamente, en la posición siguiente al último carácter, el carácter nulo \0 Por esta razón es necesario definir una posición más de las que necesitemos.
Para introducir los caracteres, podemos:
- escribirlos como cadena literal: char nombrearray[]=”cadena”;
en cuyo caso el compilador reserva automáticamente las posiciones necesarias y además incluye al final el carácter nulo \0
- escribirlos carácter a carácter, entre llaves y separados por comillas sencillas:
char nombrearray[nºposiciones]={‘carácter1’,’carácter2’,…,’\0’};
teniendo entonces que reservar el número de posiciones necesario e incluir al final el carácter nulo
- pedirlos al usuario mediante gets(nombrearray), como veremos a continuación en las funciones de cadena.

printf(); Su sintaxis es la misma que vimos al hablar de los tipos entero, real y char:
gets(); Es la función equivalente a scanf(); Permite introducir la cadena por teclado.
getch(); y getche(); Ambas funciones fueron estudiadas. Nos permitían tomar pulsaciones del teclado. Podemos usarlas para ir tomando una cadena carácter a carácter. Habrá que limitar el número de caracteres dependiendo de las posiciones que pusiésemos en la declaración del array, y después del último carácter, hay que meter el carácter nulo.
Ambas se encuentran en el fichero de cabecera conio.h
Otras funciones de tratamiento de cadenas (strings)
Todas ellas están incluídas en el fichero de cabecera string.h
strcat(); Concatena dos cadenas. Sintaxis: strcat(cadenadestino,cadenaorigen);
La cadena destino debe ser lo suficientemente grande como para poder contener a la cadena origen, que se pondrá después del último carácter, si es que lo hay, de la destino
strcmp(); Sintaxis: variable_entera=strcmp(cadena1,cadena2);
Compara dos cadenas, devolviendo:
- 0 si son iguales
- <0 si el código ASCII del carácter diferenciador de la primera cadena es menor que el de la segunda.
- >0 si el código ASCII del carácter diferenciador de la primera cadena es mayor que el de la segunda.
strcpy(); Sintaxis: strcpy(cadenadestino,cadenaorigen);
Copia la cadena origen en la cadena destino. Esta deberá tener el tamaño adecuado para contener a la primera.
strlen(); Sintaxis: variable_entera=strlen(cadena);
Mide la longitud (el nº de caracteres) de una cadena. Los espacios en blanco también son caracteres.