Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct {
- double **address;
- int rows;
- int coluns;
- } DoubleArray;
- void readDoubleArray(DoubleArray *x);
- DoubleArray multiplyDoubleArray(DoubleArray *x, DoubleArray *y);
- void showDoubleArray(DoubleArray *x);
- int main(void) {
- DoubleArray a, b, c;
- readDoubleArray(&a);
- readDoubleArray(&b);
- if(a.address && b.address) { /* alocações e leituras com sucesso */
- c = multiplyDoubleArray(&a, &b);
- if(c.address) { /* alocação e multiplicação com sucesso */
- showDoubleArray(&a);
- showDoubleArray(&b);
- showDoubleArray(&c);
- free(a.address);
- free(b.address);
- free(c.address);
- }
- }
- return 0;
- }
- void readDoubleArray(DoubleArray *x)
- {
- int contador1=0,contador2=0;
- printf("Digite o numero de linhas: ");
- scanf("%d",&x->rows);
- printf("\nDigite o numero de colunas: ");
- scanf("%d",&x->coluns);
- x->address=(double **)malloc(x->rows*sizeof(double));
- while(contador1<(x->rows))
- {
- x->address[contador1]=(double *)malloc(x->coluns*sizeof(double));
- contador1++;
- }
- for(contador1=0;contador1<(x->rows);contador1++)
- {
- for(contador2=0;contador2<(x->coluns);contador2++)
- {
- printf("digite o valor do elemento da linha %d, coluna %d: ",contador1+1,contador2+1);
- scanf("%lf",&x->address[contador1][contador2]);
- }
- }
- }
- void showDoubleArray(DoubleArray *x)
- {
- int contador1=0, contador2=0;
- printf("\n");
- while(contador1<(x->rows))
- {
- for(contador2=0;contador2<(x->coluns);contador2++)
- printf(" %.2lf",x->address[contador1][contador2]);
- contador1++;
- printf("\n");
- }
- }
- DoubleArray multiplyDoubleArray(DoubleArray *x, DoubleArray *y)
- {
- int contador1=0, contador2=0, contador3=0;
- DoubleArray prod;
- double fator;
- if(x->rows==y->coluns)
- {
- prod.rows=x->rows;
- prod.coluns=y->coluns;
- prod.address=(double **)malloc(prod.rows*sizeof(double));
- for(contador1=0;contador1<(prod.rows);contador1++)
- prod.address[contador1]=(double *)malloc(prod.coluns*sizeof(double));
- for(contador1=0;contador1<(prod.rows);contador1++)
- {
- for(contador2=0;contador2<(prod.coluns);contador2++)
- {
- prod.address[contador1][contador2]=0;
- for(contador3=0;contador3<(x->coluns);contador3++)
- {
- fator=x->address[contador1][contador3]*y->address[contador3][contador2];
- prod.address[contador1][contador2]+=fator;
- }
- }
- }
- }
- else exit(1);
- return prod ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement