Você está na página 1de 2

#include <stdio.

h>
#include <string.h>
#define MAX 2000

typedef struct {
float v[MAX];
int colunas;
int linhas;
} Mat;

void gravarMatInd(Mat * A, int linha, int col, float val){


A.v[col+A.colunas*linha]=val;
}

float lerMatInd(Mat * A, int linha, int col){


printf("%d",A.v[col+A.colunas*linha]);
}

void printMat(Mat * A){


for(i = 0; i < A.linhas*A.colunas; i++) {
if(((A.linhas%(i+1))==0))
printf("\n");
printf("%d",A.v[i]);
}
}

void fillMat(Mat * A, float val){


for(i = 0; i < A.linhas*A.colunas; i++) {
A.v[i]=val;
}
}

// executa o produto entre as matrizes A e B e grava o resultado na matriz R


// o nº linhas e nº colunas da matriz R deve ser correctamente calculado
// se as dimensões das matrizes forem incompatíveis para esta operação, retornar 1
// se as dimensões da matriz R excederem o espaço máximo disponível (definido na
constante MAX), retornar 2
// se a operação for correctamente executada, retornar 0
int matProd(Mat * A, Mat * B, Mat * R){
float aux = 0;

for(i = 0; i < A.linhas; i++) {


for(j = 0; j < B.colunas; j++) {
for(x = 0; x < linhaB; x++) {
aux=aux+A.v[x+j*i]*B[x+j*i]
}
R.v[x+j*i] = aux;
aux = 0;
}
}
return 0
}

int main(){
Mat X, Y, Z;

X.linhas = 10;
X.colunas = 2;

Y.linhas = 2;
Y.colunas = 10;

fillMat(X,2);
fillMat(Y,10);
printMat(X);
printMat(Y);
matProd(X,Y,Z);
printMat(Z);
}

Você também pode gostar