
Дан массив A[N][M]. Удалить строки массива, не имеющие ни одного повторяющегося элемента. C++


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

#include <iostream>
#include <array>
#include <list>
#include <random>
int main() {
system("chcp 1251>nul");
const unsigned int N = 10, M = 10;
int A[N][M];
int reserve;
for (int i = 0; i < N; i++) {
for (int n = 0; n < M; n++) {
reserve = n;
for (int j = 0; j < M; j++) {
if (A[i][reserve] == A[i][j])
A.pop(i); // Если бы это был список то он бы удалил элемент
}
}
}
system("pause>nul");
return 0;
}



Для удаления строк массива A[N][M]
, которые не содержат ни одного повторяющегося элемента, вам нужно пройти по каждой строке массива и проверить, есть ли повторяющиеся элементы в этой строке. Если таких элементов нет, то вы можете удалить эту строку из массива. Вот пример кода на C++, который выполняет эту задачу:
cpp#include <iostream>
#include <vector>
#include <unordered_set>
int main() {
int N, M;
std::cout << "Введите количество строк (N): ";
std::cin >> N;
std::cout << "Введите количество столбцов (M): ";
std::cin >> M;
// Создаем двумерный массив A[N][M]
std::vector<std::vector<int>> A(N, std::vector<int>(M));
// Ввод элементов массива
for (int i = 0; i < N; i++) {
std::cout << "Введите элементы строки " << i + 1 << ": ";
for (int j = 0; j < M; j++) {
std::cin >> A[i][j];
}
}
// Вектор для хранения индексов строк, которые нужно удалить
std::vector<int> rows_to_delete;
for (int i = 0; i < N; i++) {
std::unordered_set<int> seen;
bool has_duplicates = false;
for (int j = 0; j < M; j++) {
if (seen.find(A[i][j]) != seen.end()) {
has_duplicates = true;
break;
}
seen.insert(A[i][j]);
}
if (!has_duplicates) {
rows_to_delete.push_back(i);
}
}
// Удаляем строки из массива
for (int i = rows_to_delete.size() - 1; i >= 0; i--) {
A.erase(A.begin() + rows_to_delete[i]);
}
// Вывод обновленного массива
std::cout << "Обновленный массив A[N][M] без строк без повторяющихся элементов:" << std::endl;
for (const std::vector<int>& row : A) {
for (int element : row) {
std::cout << element << ' ';
}
std::cout << std::endl;
}
return 0;
}
Этот код сначала вводит двумерный массив A[N][M], затем проверяет каждую строку на наличие повторяющихся элементов, и, наконец, удаляет строки, не содержащие повторяющихся элементов. Обновленный массив выводится на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика








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