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];

}

}

}

Entradas relacionadas: