Главная » 2019 » Апрель » 3 » Матрица. Умножение
10:50
Матрица. Умножение

#include <iostream>
#include <ctime>
using namespace std;
void vvod(int **a, int n, int m);
void vvod2(int **a, int n, int m);
void vivod(int **a, int n, int m);
void Multiply(int **a,int **b,int **c,int n,int k,int m);
int main()
{
    const int n=4,m=5,k=6;
    int **a=new int *[n];
    for (int i=0;i<n;i++) a[i]=new int[k];
    int **b=new int *[k];
    for (int i=0;i<k;i++) b[i]=new int[m];
    int **c=new int *[n];
    for (int i=0;i<n;i++) c[i]=new int[m];

    vvod2(a,n,k);
    cout<<"Matrix A:"<<endl; vivod(a,n,k);
    vvod2(b,k,m);
    cout<<"Matrix B:"<<endl; vivod(b,k,m); 
    Multiply(a,b,c,n,k,m);
    cout<<"Matrix C=A*B:"<<endl; vivod(c,n,m);

    for (int i=0;i<n;i++) delete []a[i];
    delete a;
    for (int i=0;i<k;i++) delete []b[i];
    delete b;
    for (int i=0;i<n;i++) delete []c[i];
    delete c;
    system("pause");
}
void Multiply(int **a,int **b,int **c,int n,int k,int m)
{
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
        { 
            c[i][j]=0;
            for (int p=0;p<k;p++)
                c[i][j]+=a[i][p]*b[p][j];
        }
}
void vvod(int **a, int n, int m)
{
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
            cin>>a[i][j];
}
void vvod2(int **a, int n, int m)
{
    srand(time(0));
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
            a[i][j]=rand()%10;
}
void vivod(int **a, int n, int m)
{
     for (int i=0;i<n;i++)
     {
        for (int j=0;j<m;j++)
        {
            cout.width(3);
            cout<<left<<a[i][j]<<" ";
        }
        cout<<endl;
     }
}

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