Showing posts with label produs. Show all posts
Showing posts with label produs. Show all posts

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(" ");
    }



}






14) Inmultirea unui a doua matrice

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

  

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


int main() {
    int a[20][20], b[20][20], c[20][20]; //c = matrice rezultat
    int i,j,sizelc,n,k,x;
    printf("Linii A: "); scanf("%d", &n);
    printf("Coloane A: "); scanf("%d", &sizelc); printf("\n");

    puts("Coloane A = Linii B ");
    printf("Coloane B: "); scanf("%d", &k);

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

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

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

    puts("Matricea rezultata este: ");
    for(i=0;i<sizelc;i++) {
        for(j=0;j<k;j++) {
            printf(" %d ",  c[i][j]);
        }
        printf("\n");
    }




}






Wednesday, January 6, 2016

13) Inmultirea unui vector cu o matrice (subprogram+alocare dinamica)

Sa se scrie programul care afiseaza rezultatul inmultirii unui vector cu o matrice folosind un subprogram. Elementele matricei si ale vectorului se vor citi de la tastatura.

  

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

void produs(int a[20][20], int b[], int *c, int dim) {
    int j,k;
    for(j=0;j<dim;j++) {
        c[j] = 0;
        for(k=0;k<dim;k++) {
            c[j] += b[k]*a[k][j];
        }
    }
}


int main() {
    int a[20][20], b[20], *c;
    int i,j,n,m;
     c = (int*)malloc(m*sizeof(int));
    printf("Numar linii: "); scanf("%d", &n);
    printf("Numar coloane: "); scanf("%d", &m);

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

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

    produs(a, b, c, m);
    puts("Vectorul rezultat: ");
    for(i=0;i<m;i++) {
        printf("c[%d] = %d \n",i,c[i]);
    }

    free(c);

}




12) Inmultirea unui vector cu o matrice (subprogram)

Sa se scrie programul care afiseaza rezultatul inmultirii unui vector cu o matrice folosind un subprogram. Elementele matricei si ale vectorului se vor citi de la tastatura.

  

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

void produs(int a[20][20], int b[20], int dim, int c[20]) {
    int j,k;
    for(j=0;j<dim;j++) {
        c[j] = 0;
            for(k=0;k<dim;k++) {
                c[j] = c[j]+b[k]*a[k][j];
            }
    }
}

int main() {
    int a[20][20], b[20], c[20];
    int i,j,n,m,k;
    printf("Rows: "); scanf("%d", &n);
    printf("Columns: "); scanf("%d", &m);
    for(i=0;i<n;i++) {
        for(j=0;j<m;j++) {
            printf("a[%d][%d] = ", i, j); scanf("%d", &a[i][j]);
        }
    }
    for(i=0;i<m;i++) {
        printf("b[%d] = ", i); scanf("%d", &b[i]);
    }
    produs(a, b, m, c);
    printf("\n");   

    put("Vectorul rezultat este: \n");
    for(i=0;i<m;i++) {
        printf("c[%d] = %d \n", i, c[i]);
    }

}


11) Inmultirea unui vector cu o matrice

Sa se scrie programul care afiseaza rezultatul inmultirii unui vector cu o matrice. Elementele matricei si ale vectorului se vor citi de la tastatura.

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


int main() {
    int a[20][20], b[20], c[20];
    int i, j, k, n, m; //n - linii, m - coloane
    printf("Numarul de linii: "); scanf("%d", &n);
    printf("Numarul de coloane: "); scanf("%d", &m);
    for(i=0;i<n;i++) {
        for(j=0;j<m;j++) {
            printf("a[%d][%d] = ", i, j); scanf("%d", &a[i][j]);
        }
    }

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

    for(j=0;j<m;j++) {
        c[j] = 0;
        for(k=0;k<m;k++) {
            c[j] += b[k]*a[k][j];
        }
    }



    puts("Vectorul rezultat este: ");
    for(k=0;k<m;k++) {
        printf("c[%d] = %d \n", k, c[k]);
    }



}