VECTORES
Un vector es un array unidimensional, es decir, sólo utiliza un índice
para referenciar a cada uno de los elementos. Su declaración será:
tipo
nombre [tamaño];
El tipo puede ser cualquiera de los ya conocidos y el tamaño indica el
número de elementos del vector ( se debe indicar entre corchetes [ ] ). En el
ejemplo puedes observar que la variable i es utilizada como índice, el primer
for sirve para rellenar el vector y el segundo para visualizarlo. Como ves, las
posiciones van de 0 a 9 ( total 10 elementos ).
Ejem.
/* Declaración de un array. */
#include
<stdio.h>
main() /*
Rellenamos del 0 - 9 */
{
int vector[10],i;
for (i=0;i<10;i++)
vector[i]=i;
for (i=0;i<10;i++)
printf(" %d",vector[i]);
}
Podemos inicializar (asignarle valores)
un vector en el momento de declararlo. Si lo hacemos así no es necesario
indicar el tamaño. Su sintaxis es:
tipo
nombre []={ valor 1, valor 2...}
Ejemplos:
int
vector[]={1,2,3,4,5,6,7,8};
char
vector[]="programador";
char
vector[]={'p','r','o','g','r','a','m','a','d','o','r'};
Una particularidad con los vectores de tipo char (cadena de caracteres),
es que deberemos indicar en que elemento se encuentra el fin de la cadena
mediante el caracter nulo (\0). Esto no lo controla el compilador, y tendremos
que ser nosotros los que insertemos este caracter al final de la cadena.
Por tanto, en un vector de 10 elementos de tipo char podremos rellenar
un máximo de 9, es decir, hasta vector[8]. Si sólo rellenamos los 5 primeros,
hasta vector[4], debemos asignar el caracter nulo a vector[5]. Es muy sencillo:
vector[5]='\0'; .
Ahora veremos un ejemplo de como se rellena un vector de tipo char.
Ejem.
/* Vector de tipo char. */
#include
<stdio.h>
main() /* Rellenamos un vector char */
{
char cadena[20];
int i;
for (i=0;i<19 && cadena[i-1]!=13;i++)
cadena[i]=getche( );
if (i==19) cadena[i]='\0';
else
cadena[i-1]='\0';
printf("\n%s",cadena);
}
Podemos ver que en el for se encuentran dos condiciones:
1.- Que no se hayan rellenado todos
los elementos (i<19).
2.- Que el usuario no haya pulsado la
tecla ENTER, cuyo código ASCII es 13. (cadena[x-i]!=13).
También podemos observar una nueva función llamada getche( ), que se
encuentra en conio.h. Esta función permite la entrada de un caracter por
teclado. Después se encuentra un if, que comprueba si se ha rellenado todo el
vector. Si es cierto, coloca el caracter nulo en el elemento nº20 (cadena[19]).
En caso contrario tenemos el else, que asigna el caracter nulo al elemento que
almacenó el caracter ENTER.
En resumen: al declarar una cadena deberemos reservar una posición más
que la longitud que queremos que tenga dicha cadena.
.- Llamadas a funciones con arrays
Como ya se comentó en el tema anterior, los arrays únicamente pueden ser
enviados a una función por referencia. Para ello deberemos enviar la dirección
de memoria del primer elemento del array. Por tanto, el argumento de la función
deberá ser un puntero.
Ejem.
/* Envío de un array a una función. */
#include
<stdio.h>
void visualizar(int []); /* prototipo
*/
main() /* rellenamos y visualizamos */
{
int array[25],i;
for (i=0;i<25;i++) {
printf("Elemento
nº %d",i+1);
scanf("%d",&array[i]);
} visualizar(&array[0]);
}
void
visualizar(int array[]) /* desarrollo */
{
int i;
for (i=0;i<25;i++)
printf("%d",array[i]);
}
En el ejemplo se puede apreciar la forma de enviar un array por
referencia. La función se podía haber declarado de otra manera, aunque funciona
exactamente igual:
declaración
o prototipo
void
visualizar(int *);
desarrollo
de la función
void
visualizar(int *array)
MATRICES
Una matriz es un array multidimensional. Se definen igual que los
vectores excepto que se requiere un índice por cada dimensión.
Su sintaxis es la siguiente:
tipo
nombre [tamaño 1][tamaño 2]...;
Una matriz bidimensional se podría representar gráficamente como una
tabla con filas y columnas.
La matriz tridimensional se utiliza, por ejemplo, para trabajos gráficos
con objetos 3D.
En el ejemplo puedes ver como se rellena y visualiza una matriz
bidimensional. Se necesitan dos bucles para cada una de las operaciones. Un
bucle controla las filas y otro las columnas.
Ejem.
/* Matriz bidimensional. */
#include
<stdio.h>
main() /* Rellenamos una matriz */
{
int
x,i,numeros[3][4]; /* rellenamos
la matriz */
for (x=0;x<3;x++)
for
(i=0;i<4;i++)
scanf("%d",&numeros[x][i]);
/* visualizamos la matriz */
for (x=0;x<3;x++)
for
(i=0;i<4;i++)
printf("%d",numeros[x][i]);
}
Si al declarar una matriz también queremos inicializarla, habrá que
tener encuenta el orden en el que los valores son asignados a los elementos de
la matriz. Veamos algunos ejemplos:
int
numeros[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
quedarían asignados de la siguiente manera:
numeros[0][0]=1 numeros[0][1]=2 numeros[0][2]=3 numeros[0][3]=4
numeros[1][0]=5 numeros[1][1]=6 numeros[1][2]=7 numeros[1][3]=8
numeros[2][0]=9 numeros[2][1]=10 numeros[2][2]=11 numeros[2][3]=12
También se pueden inicializar cadenas de texto:
char
dias[7][10]={"lunes","martes","miércoles","jueves","viernes","sábado","domingo"};
Para referirnos a cada palabra bastaría con el primer índice:
printf("%s",dias[i]);
No hay comentarios.:
Publicar un comentario