Matrices vectores y arrays

– Prog051

/* Prog051.cpp */
#include <stdio.h>
void main()
{
int i;
char nom[6];
printf(«nEscribe una palabra de exactamente 6 letras: «); scanf(«%s»,nom); for(i=0;i<6;i++)
{
printf(«nnom[%d]= «,i);
printf(«%c»,nom[i]);
}
}

Estudio del PROG051

– La variable nom, es una variable compuesta (por esta razón en el scanf no hemos de poner el símbolo & antes del nombre de la variable).

– A este tipo de variables se les llama también vectores, matrices o arrays, porque una sóla variable (nom), contiene diferentes valores (en nuestro caso 6 caracteres).

– Observa la diferencia con los identificadores de formato (string – char) %s : si queremos mostrar la palabra (todos los valores de la matriz). %c : si queremos mostrar uno de los valores de la matriz.

– Observa también la forma de acceder a uno de los valores de la matriz:nom[2] indica el 3r. valor, ya que empieza por 0 (el llamado índice de la matriz).

Es decir:
char nom[6]: define una matriz de 6 caracteres. nom[0]: indica el 1º nom[1]: indica el 2º
———————–
nom[5]: indica el último (6º).

El array del programa anterior era una matriz de caracteres, veamos que también podemos construir “arrays” de números:

– Prog052

/* Prog052.cpp */

#include <stdio.h>
void main()
{
int valors[12];
int i;
for(i=0;i<12;i++) valors[i]=2*(i+4);
for(i=0;i<12;i++)
printf(«n El valor de valors[%d] es %d»,i,valors[i]);
}

Estudio del PROG052:

int valors[12] 
Definimos una variable (matriz, vector o array) de 12 valores enteros.

x Asignamos valores a la matriz anterior:

i = 0 : valors[0] = 2*(0+4) = 8 i = 1 : valors[1] = 2*(1+4) = 10
…………………………………
……………………………………
i = 11   : valors[11] = 2*(11+4) = 30

– Observa que en una matriz entera (int) no hay problema en cuanto al identificador: siempre es %d. 

– Prog053

/* Prog053.cpp */

#include <stdio.h>
void main()
{
float vector1[3],vector2[3];
int i;
float proesc;
/* Introducción del primer vector */
printf(«n Introduce las componentes del primer vectorn»);
scanf(«%f %f %f»,&vector1[0],&vector1[1],&vector1[2]);
/* Introducción del segundo vector */
printf(«n Introduce las componentes del segundo vectorn»);
scanf(«%f %f %f»,&vector2[0],&vector2[1],&vector2[2]);
printf(» Vector 1= ( %f, %f, %f )»,vector1[0],vector1[1],vector1[2]);
printf(» Vector 2= ( %f, %f, %f )»,vector2[0],vector2[1],vector2[2]);
/* Cálculo del producto escalar */
for(i=0;i<3;i++) proesc=proesc+vector1[i]*vector2[i]; /* Resultado */
printf(«nn El producto escalar es = %f»,proesc);
}

La utilidad de los arrays está clara: observa de que forma más fácil calculamosel producto escalar.

– Prog054

/* Prog054.cpp */

#include <stdio.h>
void main()
{
float f1[3],f2[3],f3[3]; int i;
float det;
/* Introducción de la primera fila del determinante */ printf(«n Introduce los elementos de la primera filan»); scanf(«%f %f %f»,&f1[0],&f1[1],&f1[2]);
/* Introducción de la segunda fila del determinante */ printf(«n Introduce los elementos de la segunda filan»); scanf(«%f %f %f»,&f2[0],&f2[1],&f2[2]);
/* Introducción de la tercera fila del determinante */ printf(«n Introduce los elementos de la tercera filan»); scanf(«%f %f %f»,&f3[0],&f3[1],&f3[2]);
printf(«n | %11f %11f %11f |»,f1[0],f1[1],f1[2]);
printf(«n | %11f %11f %11f |»,f2[0],f2[1],f2[2]);
printf(«n | %11f %11f %11f |»,f3[0],f3[1],f3[2]);
/* Cálculo del determinante */ det=f1[0]*f2[1]*f3[2]+f2[0]*f3[1]*f1[2]+f1[1]*f2[2]*f3[0]-f1[2]*f2[1]*f3[0]-f2[0]*f1[1]*f3[2]-f3[1]*f2[2]*f1[0];
/* Resultado */

printf(«nn                              El Determinante es = %f»,det);
}

Fuente: Programación en C/C++ (Manual FV) de Fermí Vilà