Решил часть 3-й задачи... Пожалуйста, раскритикуйте мой код... Приму любые дельные замечания..
Кроме того хочу узнать, посоветуйте, как решается данная задачка, если можно попунктно, например: шаг 1... шаг 2... шаг 3... и т.д... от чего отталкиваться, приму любые ссылки. Но больше всего хочу узнать, как определить класс "Вектор" и умножить Вектор на Матрицу... Очень бы хотелось увидеть код, выполняющий это умножение, а не сухое определение Вектора... Поскольку считаю для себя проблему в том, что я не могу определить класс "Вектор"... Передаю файл, который у меня получился... Так что критикуйте, как пожелает сердце, ведь в споре рождается истина, всем благодарен, за советы и помощь, кто откликнется!
Код:

//---------------------------------------------------------------------------
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;
#include <iomanip>
using std::setw;
class Matrix{ // Класс Matrix
// Дружеская функция умножения Матрицы на Матрицу
friend void MultiplicationMatrix(Matrix &mMatrix);
// Дружеская функция умножения Матрицы на Число
friend void NumberMultiplicationMatrix(Matrix &mMatrix, int);
public:
Matrix(int height = 1, int width = 1); // Конструктор с аргументами по умолчанию
void setMatrix(int height, int width); // Установка размера матрицы
void UserFromKeyboards(); // Ввод данных с клавиатуры
void PrintTwoMatrix(); // Печать Значений Матриц
~Matrix(); // Деструктор
private:
int *Matrix_1; // Указатель на целое (Первая Матрица)
int *Matrix_2; // Указатель на целое (Вторая Матрица)
int SizeMatrix; // Размер Матрицы
int row; // Сколько строк в Матрице
int column; // Сколько столбцов в Матрице
};
// Конструктор--------------------------------------------------------------
Matrix::Matrix(int height, int width)
{
setMatrix(height, width);
}
// Установка размера Матрицы------------------------------------------------
void Matrix::setMatrix(int h, int w)
{
SizeMatrix = h * w;
}
// Ввод данных с клавиатуры-------------------------------------------------
void Matrix::UserFromKeyboards()
{
int counter_1 = 1,
counter_2 = 1;
cout<<" Enter size Column: ";
cin>>column; // Столбцы
cout<<" Enter size Row: ";
cin>>row; // Строки
setMatrix(row, column); // Определение размера Матрицы ( row * column )
Matrix_1 = new int[SizeMatrix]; // Матрица 1 в виде одномерного массива
Matrix_2 = new int[SizeMatrix]; // Матрица 2 в виде одномерного массива
// Циклический ввод в 1-ю Матрицу
for(int i = 0; i < SizeMatrix; i++){
cout<<" Enter value in 'Matrix_1', position "<<counter_1++<<" Value: ";
cin>>Matrix_1[i];
}
cout<<endl; // Пустая строка (для читабельности)
// Циклический ввод в 2-ю Матрицу
for(int j = 0; j < SizeMatrix; j++){
cout<<" Enter value in 'Matrix_2', position "<<counter_2++<<" Value: ";
cin>>Matrix_2[j];
}
}
// Вывод элементов обоих Матриц на экран------------------------------------
void Matrix::PrintTwoMatrix()
{
int control_1 = 0, // Для вывода знака '|' в начале 1-й Матрицы
control_2 = 0, // Для вывода знака '|' в начале 2-й Матрицы
counColumn_1 = column, // Для вывода знака '|' в конце 1-й Матрицы
counColumn_2 = column; // Для вывода знака '|' в конце 2-й Матрицы
// Вывод на экран 1-й Матрицы
for(int j = 0; j < SizeMatrix; j++){
if(control_1 == 0){
cout<<'|';
control_1++;
}
cout<<setw(7)<<Matrix_1[j];
if(j == counColumn_1-1){
counColumn_1 += column;
cout<<'|';
control_1 = 0;
cout<<endl;
}
}
cout<<"\n\n"; // Пару пустых строк (для читабельности)
// Вывод на экран 2-й Матрицы
for(int jj = 0; jj < SizeMatrix; jj++){
if(control_2 == 0){
cout<<'|';
control_2++;
}
cout<<setw(7)<<Matrix_2[jj];
if(jj == counColumn_2-1){
counColumn_2 += column;
cout<<'|';
control_2 = 0;
cout<<endl;
}
}
}
// Деструктор---------------------------------------------------------------
Matrix::~Matrix()
{
cout<<"Destructor"<<endl;
}
// Дружеская функция умножения Матрицы на Матрицу. В качестве---------------
// хранения результатов используется 2-я Матрица----------------------------
void MultiplicationMatrix(Matrix &mMatrix)
{
int control = 0,
counColumn = mMatrix.column;
// Умножение Матрицы на Матрицу.
// Циклическое умножение элемента 1-й Матрицы на элемент 2-й Матрицы
for(int i = 0; i < mMatrix.SizeMatrix; i++)
mMatrix.Matrix_2[i] *= mMatrix.Matrix_1[i];// * mMatrix.Matrix_2[i];
cout<<"\n\n Result Multiplication...\n\n";
// Вывод результата умножения Матрицы на Матрицу
for(int j = 0; j < mMatrix.SizeMatrix; j++){
if(control == 0){
cout<<'|';
control++;
}
cout<<setw(7)<<mMatrix.Matrix_2[j];
if(j == counColumn-1){
counColumn += mMatrix.column;
cout<<'|';
control = 0;
cout<<endl;
}
}
}
// Дружеская функция умножения Матрицы на Число. В качестве------------------
// хранения результатов используется 2-я Матрица-----------------------------
void NumberMultiplicationMatrix(Matrix &mMatrix, int number)
{
int control = 0,
counColumn = mMatrix.column;
// Умножение Матрицы на Число.
// Циклическое умножение элемента 1-й Матрицы на элемент 2-й Матрицы
for(int i = 0; i < mMatrix.SizeMatrix; i++)
mMatrix.Matrix_2[i] = number * mMatrix.Matrix_1[i];
cout<<"\n\n Result Multiplication Number "<<number<<" 'Matrix_1'\n\n";
// Вывод результата умножения Матрицы на Число
for(int j = 0; j < mMatrix.SizeMatrix; j++){
if(control == 0){
cout<<'|';
control++;
}
cout<<setw(7)<<mMatrix.Matrix_2[j];
if(j == counColumn-1){
counColumn += mMatrix.column;
cout<<'|';
control = 0;
cout<<endl;
}
}
}
// Выполнение программы------------------------------------------------------
int main()
{
int z, num;
Matrix matrx_1;
matrx_1.UserFromKeyboards(); // Ввод
matrx_1.PrintTwoMatrix(); // Печать
MultiplicationMatrix(matrx_1); // Функция умножения Матрицы на Матрицу
// Предложение ввести Число на которое будет умножена 1-я Матрица
cout<<"\n\n Enter Number Multiplication Matrix: ";
cin>>num;
cout<<endl;
NumberMultiplicationMatrix(matrx_1, num); // Функция умножения Матрицы на Число
cin>>z;
return 0;
}
//---------------------------------------------------------------------------