Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- using std::cin;
- using std::cout;
- using std::endl;
- #define TAB '\t'
- #define EL2 cout << endl << endl
- #define EL5 cout << endl << endl << endl << endl << endl
- #define EL10 cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl
- #define InsertionSort // cортировка двумерного массива по строкам и столбцам
- //#define Transposition // транспонирование матрицы из одного массива в другой
- //#define Multiplication // умножение матриц
- void main()
- {
- setlocale(0, "");
- srand(time(NULL));
- const int sz = 10; // размер для всех массивов
- int alpha[sz][sz];
- int beta[sz][sz];
- int gamma[sz][sz];
- int tmp;
- cout << "Массив Alpha: \n" << endl;
- // инициализация массива alpha случайными числами от 10 до 100 (только двузначными) и вывод его на экран
- for (int i = 0; i < sz; cout << endl << endl, ++i)
- for (int j = 0; j < sz; ++j)
- cout << (alpha[i][j] = rand() % 90 + 10) << TAB;
- #ifdef InsertionSort // сортировка вставками строк и столбцов в массиве alpha
- // сортировка строк массива
- for (int i = 0; i < sz; ++i)
- for (int j = 1; j < sz; ++j)
- for (int k = j; k > 0 && alpha[i][k - 1] > alpha[i][k]; --k)
- {
- tmp = alpha[i][k - 1];
- alpha[i][k - 1] = alpha[i][k];
- alpha[i][k] = tmp;
- }
- //сортировка столбцов массива
- for (int i = 0; i < sz; ++i)
- for (int j = 1; j < sz; ++j)
- for (int k = j; k > 0 && alpha[k - 1][i] > alpha[k][i]; --k)
- {
- tmp = alpha[k - 1][i];
- alpha[k - 1][i] = alpha[k][i];
- alpha[k][i] = tmp;
- }
- EL5;
- cout << "Массив Alpha после сортировки: \n" << endl;
- // вывод отсортированого массива на экран
- for (int i = 0; i < sz; cout << endl << endl, ++i)
- for (int j = 0; j < sz; ++j)
- cout << alpha[i][j] << TAB;
- #endif
- #ifdef Transposition // транспонирование матриц
- // присваивание элементам в строках массива значения элементов столбцов, а элементам столбцов значения элементов его строк
- for (int i = 0; i < sz; ++i)
- for (int j = 0; j < sz; ++j)
- beta[i][j] = alpha[j][i];
- EL5;
- cout << "Массив beta с транспониро-\nванной матрицей из массива alpha: \n" << endl;
- // вывод транспонированого массива на экран
- for (int i = 0; i < sz; cout << endl << endl, ++i)
- for (int j = 0; j < sz; ++j)
- cout << beta[i][j] << TAB;
- #endif
- #ifdef Multiplication // умножение матриц
- EL5;
- cout << "Матрица A: \n" << endl;
- // инициализация массива beta (матрицы А) случайными числами от 0 до 10
- for (int i = 0; i < sz; cout << endl << endl, ++i)
- for (int j = 0; j < sz; ++j)
- cout << (alpha[i][j] = rand() % 10) << TAB;
- EL5;
- cout <<"Матрица B: \n" << endl;
- // инициализация массива Beta (матрицы B) случайными числами от 0 до 10
- for (int i = 0; i < sz; cout << endl << endl, ++i)
- for (int j = 0; j < sz; ++j)
- cout << (beta[i][j] = rand() % 10) << TAB;
- // умножение матрицы А на B в массивах Alpha и Beta
- for (int i = 0; i < sz; ++i)
- for (int j = 0; j < sz; ++j)
- {
- tmp = 0;
- for (int k = 0; k < sz; ++k)
- tmp += alpha[j][k] * beta[k][i];
- gamma[j][i] = tmp;
- }
- EL5;
- cout << "Произведение матриц А и B: \n" << endl;
- // вывод массива Gamma с произведением матриц на экран
- for (int i = 0; i < sz; cout << endl << endl, ++i)
- for (int j = 0; j < sz; ++j)
- cout << gamma[i][j] << TAB;
- // проверка на правильность решения простым способом
- /*int delta[sz][sz];
- delta[0][0] = alpha[0][0] * beta[0][0] + alpha[0][1] * beta[1][0] + alpha[0][2] * beta[2][0];
- delta[0][1] = alpha[0][0] * beta[0][1] + alpha[0][1] * beta[1][1] + alpha[0][2] * beta[2][1];
- delta[0][2] = alpha[0][0] * beta[0][2] + alpha[0][1] * beta[1][2] + alpha[0][2] * beta[2][2];
- delta[1][0] = alpha[1][0] * beta[0][0] + alpha[1][1] * beta[1][0] + alpha[1][2] * beta[2][0];
- delta[1][1] = alpha[1][0] * beta[0][1] + alpha[1][1] * beta[1][1] + alpha[1][2] * beta[2][1];
- delta[1][2] = alpha[1][0] * beta[0][2] + alpha[1][1] * beta[1][2] + alpha[1][2] * beta[2][2];
- delta[2][0] = alpha[2][0] * beta[0][0] + alpha[2][1] * beta[1][0] + alpha[2][2] * beta[2][0];
- delta[2][1] = alpha[2][0] * beta[0][1] + alpha[2][1] * beta[1][1] + alpha[2][2] * beta[2][1];
- delta[2][2] = alpha[2][0] * beta[0][2] + alpha[2][1] * beta[1][2] + alpha[2][2] * beta[2][2];
- // вывод массива delta с произведением матриц на экран
- for (int i = 0; i < sz; cout << endl << endl, ++i)
- for (int j = 0; j < sz; ++j)
- cout << delta[i][j] << TAB;
- cout << endl;*/
- #endif
- EL10;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement