Главная » 2018 » Март » 23 » Произведение матриц
11:13
Произведение матриц

#include <iostream>
#include <ctime>
using namespace std;
void vvod(int **x, int n, int m);
void vivod(int **x, int n, int m);
void ProizvMatrix(int **x, int **y, int **z, int n, int m, int l);
int main()
{
    setlocale(LC_ALL, "Russian");
    srand(time(0));
    const int n=5, m=8, l=10;
    int **a, **b, **c;  //A[n,m]*B[m,l]=C[n,l]
    a=new int *[n]; 
    for (int i=0;i<n;i++) a[i]=new int [m];
    b=new int *[m]; 
    for (int i=0;i<m;i++) b[i]=new int [l];
    c=new int *[n]; 
    for (int i=0;i<n;i++) c[i]=new int [l];
    vvod(a,n,m);
    cout<<"Матрица А"<<endl;
    vivod(a,n,m);
    
    vvod(b,m,l);
    cout<<"Матрица B"<<endl;
    vivod(b,m,l);
    ProizvMatrix(a,b,c,n,m,l);
    cout<<"Матрица C = A x B"<<endl;
    vivod(c,n,l);

    for (int i=0;i<n;i++) delete []a[i]; 
    delete []a; 
    for (int i=0;i<m;i++) delete []b[i]; 
    delete []b; 
    for (int i=0;i<n;i++) delete []c[i]; 
    delete []c;
    system("pause");
    return 0;
}
void vvod(int **x, int n, int m)
{
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++) 
            x[i][j]=rand()%40+10;
}
void vivod(int **x, int n, int m)
{
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++) 
            cout<<x[i][j]<<" ";
        cout<<endl;
    }
}
void ProizvMatrix(int **x, int **y, int **z, int n, int m, int l)
{
    //X[n,m]*Y[m,l]=Z[n,l]
    int s;
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<l;j++) 
        {
            s=0;
            for (int p=0;p<m;p++)
                s=s+x[i][p]*y[p][j];
            z[i][j]=s;
        }
    }
}

Просмотров: 325 | Добавил: denjes | Рейтинг: 0.0/0
Всего комментариев: 0
avatar