
С++ Дана целочисленная матрица A[N][N]. Сформировать одномерный массив X[2N] по следующему
правилу: элементами одномерного массива с нечетными индексами будут элементы главной диагонали матрицы, а с четными - побочной диагонали. Определить, какое значение массива X чаще всего встречается в нем самом.

Ответы на вопрос

#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main(){
int n;
cin >> n;
vector<vector<int>> a(n, vector<int> (n));
vector<int> x(2*n);
map<int,int> m;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
cin >> a[i][j];
int cur1 = 1, cur2 = 0, elem = 0, cnt = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(i == j){
x[cur1] = a[i][j];
cur1 += 2;
m[a[i][j]]++;
if(m[a[i][j]] > cnt){
cnt = m[a[i][j]];
elem = a[i][j];
}
}
if(i + j == n - 1){
x[cur2] = a[i][j];
cur2 += 2;
m[a[i][j]]++;
if(m[a[i][j]] > cnt){
cnt = m[a[i][j]];
elem = a[i][j];
}
}
}
}
for(auto &i : x) cout << i << " ";
cout << "\nThe most popular element is : " << elem;
}



Для выполнения этой задачи вам нужно будет выполнить следующие шаги в C++:
Создать целочисленную матрицу
A
размеромN x N
и заполнить ее данными.Создать одномерный массив
X
размером2N
.Заполнить одномерный массив
X
согласно указанным правилам (элементы с нечетными индексами из главной диагонали, с четными - из побочной).Создать контейнер (например,
std::map
илиstd::unordered_map
) для подсчета частоты встречаемости значений в массивеX
.Пройти по элементам массива
X
, увеличивая счетчики в контейнере для каждого значения.Найти значение, которое встречается чаще всего, и вывести его.
Вот пример кода на C++, который реализует это:
cpp#include <iostream>
#include <vector>
#include <map>
int main() {
const int N = 3; // Задайте размер матрицы N x N
int A[N][N]; // Объявление матрицы A
int X[2*N]; // Объявление массива X
std::map<int, int> frequency; // Контейнер для подсчета частоты встречаемости значений в X
// Заполнение матрицы A данными (ваш код)
// Заполнение массива X
int index = 0;
for (int i = 0; i < N; ++i) {
X[index++] = A[i][i]; // Главная диагональ
X[index++] = A[i][N - 1 - i]; // Побочная диагональ
}
// Подсчет частоты встречаемости значений в X
for (int i = 0; i < 2*N; ++i) {
frequency[X[i]]++;
}
// Находим значение, которое встречается чаще всего
int most_frequent_value = 0;
int max_frequency = 0;
for (const auto& pair : frequency) {
if (pair.second > max_frequency) {
most_frequent_value = pair.first;
max_frequency = pair.second;
}
}
std::cout << "Значение, которое встречается чаще всего: " << most_frequent_value << std::endl;
return 0;
}
Этот код сначала заполняет массив X
в соответствии с указанными правилами, затем подсчитывает частоту встречаемости значений в X
и находит значение, которое встречается чаще всего.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili