Розробити програму, дотримаючись таких вимог: викорис- товувати динамічні масиви; реальні розміри масиву n i m ввести з клавіатури; елементи масиву – псевдовипадкові числа на інтервалі [a,b], де a і b (a<b) вводяться з клавіатури; усі вхідні дані, елементи вхідного і вихідного масивів виводяться на екран у зручному для перегляду вигляді. Дана прямокутна дійсна матриця.

Підрахувати кількість парних і непарних елементів на головній і побічній діагоналях матриці.

Визначити номер стовпця, сума елементів якого мінімальна.​
Писати на мові C++​
Ответ
5/5 (1 оценка)
1
Hn94 1 год назад
Светило науки - 72 ответа - 0 раз оказано помощи

Ответ:

Объяснение:

#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;

}