/* Kodutöö 2. Variant 4. * Sisestatakse kaks massiivi A (n,m) ja B (k,l). * Ridade ja veergude arv reaalarvulised 1<=n<=10. * Moodustatakse massiiv C - massivide summa. * Massiiv C dimensioonid min(n,k) ja min(m,l). * Massiiv C kuvatakse ridade kaupa.*/ #include <stdio.h> //Prototüübid int SisestusN(); int SisestusM(); int SisestusL(); int SisestusK(); int SisestusCRida(int, int); int SisestusCVeerg(int,int); void MaatriksSisestus(int, int, int, int, double[][10], double[][10]); void VäljastusAlgne(int, int, int, int, double[][10], double[][10]); void MaatriksLiitmine(int, int, double[][10], double[][10], double[][10]); void CVäljastus(int, int, double[][10]); int main(void) { int n = SisestusN(); int m = SisestusM(); int l = SisestusL(); int k = SisestusK(); double A[n][m]; double B[k][l]; int CRida = SisestusCRida(n, k); int CVeerg = SisestusCVeerg(m,l); double C[CRida][CVeerg]; MaatriksSisestus(n, m, l, k, A, B); VäljastusAlgne(n, m, l, k, A, B); MaatriksLiitmine(CRida, CVeerg, A, B, C); CVäljastus(CRida, CVeerg, C); return 0; } //Sisestus int SisestusN() { int n; do { printf("Sisestage A veergude arv \n"); scanf("%d", &n); if(n <= 1 || n >= 10) { printf("Sisestatud väärtus ei sobi, sisestage täisarv vahemikus 1...10."); } } while(n <= 1 || n >= 10); return n; } int SisestusM() { int m; do { printf("Sisestage A ridade arv \n"); scanf("%d", &m); if(m <= 1 || m >= 10) { printf("Sisestatud väärtus ei sobi, sisestage täisarv vahemikus 1...10."); } } while(m <= 1 || m >= 10); return m; } int SisestusL() { int l; do { printf("Sisestage B veergude arv \n"); scanf("%d", &l); if(l <= 1 || l >= 10) { printf("Sisestatud väärtus ei sobi, sisestage täisarv vahemikus 1...10."); } } while(l <= 1 || l >= 10); return l; } int SisestusK() { int k; do { printf("Sisestage B ridade arv \n"); scanf("%d", &k); if(k <= 1 || k >= 10) { printf("Sisestatud väärtus ei sobi, sisestage täisarv vahemikus 1...10."); } } while(k <= 1 || k >= 10); return k; } int SisestusCRida(int n, int k) { int CRida; if(n < k) { CRida = n; }else { CRida = k; } return CRida; } int SisestusCVeerg(int m, int l) { int CVeerg; if(m < l) { CVeerg = m; }else { CVeerg = l; } return CVeerg; } void MaatriksSisestus(int n, int m, int k, int l, double A[][m], double B[][l]) { int i, j, Kontroll; //järjenumbrid, scanf kontrolli muutuja for(i=0;i<m;i++) { for(j=0;j<n;j++) { do { printf("Sisestada A väärtus veerg [%d], rida [%d]", i,j); Kontroll = scanf("%lf", &A[i][j]); if(Kontroll == 0) { printf("Sisestatud väärtus ei sobi, sisestage reaalarv"); scanf("%*s"); //A[i][j] ei anta väärtust } } while(Kontroll == 0); //reaalarvu kontroll } } for(i=0;i<k;i++) { for(j=0;j<l;j++) { do { printf("Sisestada B väärtus veerg [%d], rida [%d]", i,j); Kontroll = scanf("%lf", &B[i][j]); if(Kontroll == 0) { printf("Sisestatud väärtus ei sobi, sisestage reaalarv"); scanf("%*s"); } } while(Kontroll == 0); } } } void VäljastusAlgne(int n, int m, int k, int l, double A[][m], double B[][l]) { int i, j; printf("\nSisestatud maatriks A:\n"); for(i = 0; i < m; i++) { for(j = 0; j < n; j++) { printf("%lf ", A[i][j]); } printf("\n"); } printf("\nSisestatud maatriks B:\n"); for(i = 0; i < l; i++) { for(j = 0; j < k; j++) { printf("%lf ", B[i][j]); } printf("\n"); } } void MaatriksLiitmine(int CRida, int CVeerg, double A[][CVeerg], double B[][CVeerg], double C[][CVeerg]) { int j, i; for(i=0; i<CVeerg; i++) { for(j=0; j<CRida; j++) { C[i][j]= A[i][j] + B[i][j]; } } } void CVäljastus(int CRida, int CVeerg, double C[][CVeerg]) { int j, i; printf("\nMaatriks C:\n"); for(i=0; i < CRida; i++) { for(j=0; j < CVeerg; j++) { printf("%lf ", C[i][j]); } printf("\n"); } }