Thursday, January 7, 2016

16) Inmultirea unui a doua matrice (subprogram+alocare dinamica)

Sa se scrie programul care afiseaza rezultatul inmultirii unei matrice A cu o matrice B folosind un subprogram. Elementele ambelor matrice se vor citi de la tastatura.

  

#include <stdio.h>
#include <stdlib.h>


float **produsF(float a[20][20], float b[20][20], int n, int k) {
    float **produs;
    int i,j,x;
    produs = (float**) malloc(n*sizeof(float));
    for(i=0;i<k;i++) {
        produs[i] = (float**) malloc(k*sizeof(float));
    }

    for(i=0;i<n;i++) {
        for(j=0;j<k;j++) {
            produs[i][j]=0;
            for(x=0;x<n;x++) {
                produs[i][j] += a[i][x]*b[x][j];
            }
        }
    }
    return produs;
}


int main() {
    float a[20][20], b[20][20], **c;
    int i,j,n,size,k;
    printf("Linii A: "); scanf("%d", &n);
    printf("Coloane A = Linii B: "); scanf("%d", &size);
    printf("Coloane B: "); scanf("%d", &k);

    for(i=0;i<n;i++) {
        for(j=0;j<size;j++) {
            printf("a[%d][%d] = ", i, j); scanf("%f", &a[i][j]);
        }
    }

    for(i=0;i<size;i++) {
        for(j=0;j<k;j++) {
            printf("b[%d][%d] = ", i, j); scanf("%f", &b[i][j]);
        }
    }

    c = produsF(a, b, n, k);
    puts("Matrice rezultat: ");
    for(i=0;i<n;i++) {
        for(j=0;j<size;j++) {
            printf(" %f ", c[i][j]);
        }
        puts(" ");
    }



}






No comments:

Post a Comment