Розробити програму, дотримаючись таких вимог: викорис- товувати динамічні масиви; реальні розміри
масиву n i m ввести з клавіатури; елементи масиву – псевдовипадкові числа на інтервалі [a,b], де a і b (a<b) вводяться з клавіатури; усі вхідні дані, елементи вхідного і вихідного масивів виводяться на екран у зручному для перегляду вигляді. Дана прямокутна дійсна матриця. Підрахувати кількість парних і непарних елементів на головній і побічній діагоналях матриці.Визначити номер стовпця, сума елементів якого мінімальна.Писати на мові C++Ответы на вопрос
Ответ:
Объяснение:
#include <iostream>
#include <ctime>
#include <string>
using namespace std;
int main()
{
srand(time(NULL));
int rows, cols; // Розміри матриці
cout << "Enter n: ";
cin >> rows;
cout << "Enter m: ";
cin >> cols;
if (rows != cols) return 0; // Тільки в квадратній матриці є головна та побічна діагоналі
int a, b; // Межі випадкових чисел масиву
cout << "Enter a: ";
cin >> a;
cout << "Enter b: ";
cin >> b;
int Width = max(to_string(a).length(), to_string(b).length()) + 1; // Ширина для cout
int** arr = new int* [rows]; // Динамічний масив
for (int i = 0; i < rows; i++)
{
arr[i] = new int[cols];
}
cout << "n = " << rows << endl
<< "m = " << cols << endl
<< "Interval - [" << a << ";" << b << "]" << endl << endl
<< "Our matrix: " << endl;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
arr[i][j] = a + rand() % (b - a + 1);
cout.width(Width); // Щоб було красиво
cout << arr[i][j];
}
cout << endl;
}
cout << endl;
int mainOdd = 0, mainEven = 0, sideOdd = 0, sideEven = 0;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
if (i == j) (arr[i][j] % 2 == 0) ? mainEven++ : mainOdd++;
if (i + j == rows - 1) (arr[i][j] % 2 == 0) ? sideEven++ : sideOdd++;
}
}
int column, minSum;
for (int i = 0; i < cols; i++)
{
int sum = 0;
for (int j = 0; j < rows; j++)
{
sum += arr[j][i];
}
if (i == 0) { minSum = sum; column = i; }
else if (sum < minSum) { minSum = sum; column = i; }
}
cout << "---Main diagonal---" << endl
<< "Even numbers: " << mainEven << endl
<< "Odd numbers: " << mainOdd << endl;
cout << endl << "---Side diagonal---" << endl
<< "Even numbers: " << sideEven << endl
<< "Odd numbers: " << sideOdd << endl;
cout << endl << "Column number: " << column << " (counting from 0)" << endl;
for (int i = 0; i < rows; i++) // Звільнення динамічної пам'яті
{
delete[] arr[i];
}
delete[] arr;
}
Що за цікавий завдання! Прекрасно. Давай зробимо це. Відомо, що у вас є матриця, і ти хочеш підрахувати парні та непарні елементи на головній та побічній діагоналях, а також знайти номер стовпця, сума елементів якого мінімальна.
cpp#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
int n, m, a, b;
// Введення розмірів масиву та інтервалу для псевдовипадкових чисел
cout << "Введіть розміри матриці (n та m): ";
cin >> n >> m;
cout << "Введіть інтервал [a, b] для псевдовипадкових чисел (a < b): ";
cin >> a >> b;
// Ініціалізація генератора псевдовипадкових чисел
srand(time(0));
// Створення та заповнення матриці випадковими числами
int matrix[n][m];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
matrix[i][j] = rand() % (b - a + 1) + a;
cout << matrix[i][j] << "\t";
}
cout << endl;
}
// Підрахунок парних та непарних елементів на головній та побічній діагоналях
int even_main = 0, odd_main = 0, even_secondary = 0, odd_secondary = 0;
for (int i = 0; i < n; ++i) {
if (matrix[i][i] % 2 == 0)
even_main++;
else
odd_main++;
if (matrix[i][m - i - 1] % 2 == 0)
even_secondary++;
else
odd_secondary++;
}
// Виведення результатів
cout << "Парні та непарні елементи на головній діагоналі: " << even_main << ", " << odd_main << endl;
cout << "Парні та непарні елементи на побічній діагоналі: " << even_secondary << ", " << odd_secondary << endl;
// Пошук номера стовпця з мінімальною сумою
int min_sum_col = 0;
int min_sum = INT_MAX;
for (int j = 0; j < m; ++j) {
int sum = 0;
for (int i = 0; i < n; ++i) {
sum += matrix[i][j];
}
if (sum < min_sum) {
min_sum = sum;
min_sum_col = j;
}
}
cout << "Номер стовпця з мінімальною сумою елементів: " << min_sum_col + 1 << endl;
return 0;
}
Намагався уникнути надто складних речей тут, але це вже досить повноцінна програма на C++. Будь ласка, протестуй цей код та дай знати, якщо у тебе виникають які-небудь питання!
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
