#include "stdafx.h"
#include <iostream>
using namespace std;
#include <ctime>
#include <iomanip>
//////////////////////////////////////////////////////////////////////////
void out(double *a,int n);
void out(double *a,int n,int k);
void vin(double *a,int n);
void mult(double *a,double *x,int n);
void oper(double *a,double *b,double *x,double *y,int n);
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
setlocale(0,"");
int n;
double *x,*y,
*a,*b;
cout << "Введите порядок матрицы: ";
wcin >> n;
_flushall();
x = new double[n];
y = new double[n];
a = new double[n*n];
b = new double[n*n];
srand(time(0));
oper(a,b,x,y,n);
getchar();
delete[]x;
delete[]y;
delete[]a;
delete[]b;
return 0;
}
//////////////////////////////////////////////////////////////////////////
void out(double *a,int n,int k)
{
int x = n-1;
for(int i = 0;i < n*k;i++)
{
cout << setprecision(3)
<< a[i] << " ";
if(i == x)
{
cout << endl;
x += n;
}
}
cout << "\n\n";
}
//////////////////////////////////////////////////////////////////////////
void out(double *a,int n)
{
for(int i = 0; i < n;i++)
{
cout << setprecision(3)
<< a[i] << " ";
}
cout << "\n\n";
}
//////////////////////////////////////////////////////////////////////////
void vin(double *a,int n)
{
for(int i = 0; i < n;i++)
a[i] = (1.0*(rand()%401-200))/11;
}
//////////////////////////////////////////////////////////////////////////
void mult(double *a,double *x,int n)
{
int y = n-1,
k = 0;
for(int i = 0;i < n*n;i++)
{
a[i] *= x[k];
if(i == y)
{
k++;
y += n;
}
}
}
void oper(double *a,double *b,double *x,double *y,int n)
{
vin(x,n);
vin(y,n);
vin(a,n*n);
vin(b,n*n);
cout << "Матрица А:" << endl;
out(a,n,n);
cout << "Вектор Х:" << endl;
out(x,n);
cout << "Матрица В:" << endl;
out(b,n,n);
cout << "Вектор Y:" << endl;
out(y,n);
mult(a,x,n);
mult(b,y,n);
cout << "Матрица А после умножения на вектор Х:" << endl;
out(a,n,n);
cout << "Матрица В после умножения на вектор Y:" << endl;
out(b,n,n);
}