Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- //Var 16
- using namespace std;
- int main()
- {
- //!Задача 1
- cout << "Задача 1. В матрице X(5×5) определите произведение положительных элементов главной диагонали." << endl;
- // Start Variables
- int multiple = 1; //Перемножение элементов матрицы
- int firstmatrice[5][5]; //Сама матрица
- //Solve
- srand(time(0)); //Генерация сида для rand()
- for (int i = 0; i < 5; i++)
- {
- cout << "\t\t";
- for (int j = 0; j < 5; j++)
- {
- firstmatrice[i][j] = (rand() % 21) - 5; // Заполнение случайными числами [-5;15]
- cout << firstmatrice[i][j] << " ";
- }
- cout << endl;
- //Умножение
- if (firstmatrice[i][i] > 0)
- {
- multiple *= firstmatrice[i][i];
- }
- }
- cout << "Умножение всех положительных элементов = " << multiple << endl;
- //!Задача 2
- cout << "\n\nЗадача 2. Дан двумерный массив из пятнадцати строк и двух столбцов. Найти номера двух соседних строк," << endl;
- cout << "сумма элементов в которых минимальна." << endl;
- int secondmatrice[15][2];
- int indexes[2] = {0, 1}; //Индексы наименьших строк (сначала идёт 1 и 2 по договоренности ниже)
- int sum, f = 0, s = 0; //Переменная суммы, суммы первой, второй строки (можно и без них, но для читабельности)
- //? Заполнение матрицы значениями
- for (int row = 0; row < 15; row++)
- {
- for (int column = 0; column < 2; column++)
- {
- secondmatrice[row][column] = rand() % 15 + 1; //? [1;15]
- cout << "\t\t" << secondmatrice[row][column] << " ";
- }
- cout << "\n";
- }
- /* Нужно начальное выражение для сравнения
- Пусть им будет первые 2 строки */
- sum = secondmatrice[0][0] + secondmatrice[0][1] + secondmatrice[1][0] + secondmatrice[1][1]; //Сумма элементов первых двух строк
- for (int row = 1; row < 15; row++) //! Начинается с 1, ибо будет выход за пределы массива
- /*
- Проверяем 1 и предыдущую строку, 2 и 1, 3 и 2.. 15 и 14
- */
- {
- for (int column = 0; column < 2; column++)
- {
- f += secondmatrice[row - 1][column]; // Сумма элементов первой строки
- s += secondmatrice[row][column]; //Аналогично тому, что выше, только со 2-й
- }
- if (f + s < sum) //Если сумма рандомной строки будет меньше чем сумма первых двух, то они заменят сумму, а индексы изменятся
- {
- sum = f + s;
- indexes[0] = row;
- indexes[1] = row - 1;
- }
- f = 0, s = 0; // Обнуляем переменные для того, чтобы сумма в них не накапливалась с предыдущей итерации
- }
- //Вывод данных
- cout << "Индексы: " << indexes[0] << "," << indexes[1] << "\nСумма: " << sum << endl;
- //!Задача 3
- cout << "Задача 3. Дан двумерный массив размером 7х7, заполняется случайными элементами." << endl;
- cout << "Найти наименьшее из значений элементов, расположенных в местах, где находятся нули так,\n";
- cout << "как показано на рисунке:\n";
- cout << "\t\t0 0 0 0 0 0 0\n";
- cout << "\t\t0 0 0 0 0 0 0\n";
- cout << "\t\t0 0 0 0 0 0 0\n";
- cout << "\t\t0 0 0 0 0 0 0\n";
- cout << "\t\t0 0 0 0 0 0\n";
- cout << "\t\t0 0 0 0\n";
- cout << "\t\t0 0\n";
- int thirdmatrice[7][7];
- for (int i = 0; i < 7; i++) //?Заполнение
- {
- cout << "\t\t";
- for (int j = 0; j < 7; j++)
- {
- thirdmatrice[i][j] = (rand() % 21) - 5; // Заполнение случайными числами [-5;15]
- cout << thirdmatrice[i][j] << " ";
- }
- cout << endl;
- }
- int minimal = thirdmatrice[0][0]; // Пусть минимальное значение сначала будет элемент массива с индексом (0;0)
- int step = 1; //? Шаг (Нужен для "чтения" в виде пирамиды
- for (int i = 6; i >= 0; i--)
- {
- if (i < 4)
- {
- for (int j = 0; j < step; j++) //Поиск в начале
- {
- if (thirdmatrice[i][j] < minimal); minimal = thirdmatrice[i][j];
- }
- for (int j = 6; j > 6-step; j++) //Поиск в конце
- {
- if (thirdmatrice[i][j] < minimal); minimal = thirdmatrice[i][j];
- }
- step++;
- }
- else
- {
- for (int j = 0; j < 7; j++)
- {
- if (thirdmatrice[i][j]<minimal) //? Если настоящий элемент меньше первого, или любого другого, то он станет минимальным значением
- {
- minimal = thirdmatrice[i][j];
- }
- }
- }
- }
- cout<<"Минимальный = "<<minimal<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment