Implementación de Operaciones con Matrices Tridimensionales en C
Clasificado en Informática
Escrito el en español con un tamaño de 4,86 KB
MATRICES:
void inicia (double a [3][3][3], double esc);
int compara (double a [3][3][3], double b [3][3][3]);
void escalar (double a [3][3][3], double b [3][3][3], double esc);
void producto (double a [3][3][3], double b [3][3][3], double c [3][3][3]);
main() {
double a [3][3][3], b [3][3][3], c [3][3][3], esc;
int comp;
inicia (a,5.0);
inicia (b,3.0);
comp = compara (a,b);
printf (“%d\n”, comp);
printf (“introduzca el valor del escalar:”);
scanf (“%lf”,&esc);
escalar (a,b,esc);
producto (a,b,c);
}
Funciones de Matrices
Inicia:
Esta función inicializa una matriz tridimensional con valores escalados.
void inicia (double a [3][3][3], double esc){
int i,j, x, cont = 1;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
for (x=0; x<3; x++){
a[i][j][x]=cont*esc;
cont++;
}
}
}
Compara:
Esta función compara dos matrices tridimensionales y devuelve 1 si son idénticas, 0 en caso contrario.
int compara (double a [3][3][3], double b [3][3][3]) {
int i,j, x, cont = 0;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
for (x=0; x<3; x++){
if (a[i][j][x]== b[i][j][x])
cont++;
}
}
}
if (cont==27)
return 1;
return 0;
}
Escalar:
Esta función multiplica una matriz tridimensional por un escalar.
void escalar (double a [3][3][3], double b [3][3][3], double esc) {
int i,j,x;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
for (x=0; x<3; x++){
b[i][j][x]=a[i][j][x]*esc;
}
}
}
Producto:
Esta función calcula el producto elemento a elemento de dos matrices tridimensionales.
void producto (double a [3][3][3], double b [3][3][3], double c [3][3][3]){
int i,j,x;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
for (x=0; x<3; x++){
c[i][j][x]=a[i][j][x]*b[i][j][x];
}
}
}
Suma y Resta
Esta función realiza la suma o resta de dos matrices bidimensionales.
void suma_resta (double a[3][3], double b[3][3], double c[3][3], char op){
int signo, i,j;
switch(op){
case '+': signo = 1; break;
case '-': signo = -1; break;
default: signo = 0; puts (“error”);
}
if (signo != 0){
for (i = 0; i<3; i++){
for(j = 0; j<3; j++){
c[i][j] = a[i][j] + signo * b[i][j];
}
}
Simétrica
Esta función verifica si una matriz bidimensional es simétrica.
int simétrica (double a[3][3]){
int i,j;
int sim = 1;
i = j = 0;
while (i < 3 && sim){
if(a[i][j] != a[j][i]) sim = 0;
j++;
if (j == 3) {
i++;
j = 0;
}
}
return sim;
}
Transposición:
Esta función calcula la transpuesta de una matriz bidimensional.
void transpuesta(double v[], double w[]) {
int i,j;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
if (i==j)
w[i][j]= v[i][j];
else
w[i][j]= v[j][i];
}
}
}
Especial:
Esta función realiza una operación especial (producto elemento a elemento) entre dos matrices bidimensionales.
void especial (double v[], double w[], double z[]) {
int i,j;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
z[i][j] = v[i][j] * w[i][j];
}
}
}