Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gudovanets
1 / 1 / 0
Регистрация: 12.02.2015
Сообщений: 51
#1

Удаление строк из двумерного массива - C++

28.09.2016, 00:23. Просмотров 505. Ответов 2
Метки нет (Все метки)

Подскажите, пожалуйста, как исправить код, чтобы удалялись только те строки, что поэлементно меньше.
Т.е.т.е. 1 4 5 3
и 1 3 5 2
---------------
удалится должна нижняя строка, но если была бы хоть одна цифры в 2ой строке больше чем в 1, то они остались бы оба.
В моем случае удалится должны только 2ая, 3ая, и 8 строка.
Так как 2 доминирует над 8,
6ая доминирует над 2
7ая доминирует над 3

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");//чтобы русский алфавит не выводился в консоль кракозябрами
    int massiv[10][4] = { { 2,5,3,4 },{ 1,4,5,3},{ 2,3,4,3},{ 2,5,4,2 },{ 2,4,5,2 },{ 1,5,5,3 },{ 2,4,4,3 },{ 1,3,5,2 },{ 2,3,4,4 },{ 1,5,3,5 } };
    bool deleteString[4] = { 0,0,0,0};
    cout << "Из массива\n";
    for (int i = 0; i<10; i++)
    {
        for (int j = 0; j<4; j++) cout << massiv[i][j] << " ";
        cout << endl;
    }
    cout << "удалим доминируемые строки\n";
    for (int i = 0; i<10; i++) for (int j = 0; j<4; j++) if ((massiv[i][j]>massiv[i+1][j]) ||(massiv[i][j]==massiv[i + 1][j])) deleteString[i+1] = 1;//отмечаем строки, которые хотим удалить
    cout << "И получим массив\n";
    for (int i = 0; i<10; i++)
    {
        for (int j = 0; j<4; j++) if (deleteString[i] == 0) cout << massiv[i][j] << " ";
        if (deleteString[i] == 0) cout << endl;
    }
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2016, 00:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Удаление строк из двумерного массива (C++):

удаление элементов из двумерного массива - C++
в двумерном массиве, элементы которого- целые числа, удалить все строки, в которых нет ни одного чётного элемента.

Удаление строки из двумерного массива - C++
Привет всем). Подскажите пожалуйста как удалить строку из двумерного массива, Я объявил динамический массив. Нахожу нулевую строку, опускаю...

Удаление двумерного динамического массива символов - C++
Программа разбивает строку на слова и записывает каждое слово по отдельности в двумерный динамический массив, чтоб потом сравнить. Когда в...

Удаление двумерного динамического массива из памяти - C++
Допустим дан двумерный динамический массив (созданный с помощью new). Как правильно удалить его из памяти? У меня есть три варианта: ...

Правильное удаление динамического двумерного массива - C++
Доброго времени суток форумчани. Ну в общем перейду сразу к делу. О себе: сам пишу на JAVA (android),решил взяться за С++,разбираюсь с...

Удаление двумерного динамического массива (матрицы) - C++
Вот так я создаю двумерный динамический массив. bool **gameFieldArray; gameFieldArray = new bool*; for (int i = 0; i &lt; height;...

2
obivan
Падаван С++
419 / 239 / 60
Регистрация: 11.11.2014
Сообщений: 842
Завершенные тесты: 2
28.09.2016, 00:27 #2
gudovanets, в статический массивах нельзя удалять строки, можно их к примеру не выводить

Добавлено через 2 минуты
gudovanets, а касательно задания, находите минимум в строке и сравнивайте числа с ним в следующей, если какое то больше, то оставляем, если я правильно понял задание
0
gudovanets
1 / 1 / 0
Регистрация: 12.02.2015
Сообщений: 51
28.09.2016, 00:36  [ТС] #3
obivan, не совсем Вас поняла...
задание такое:

нужно пройти по всем строкам и не выводить те строки, которые меньше. Т.е...
1) берем строку 1 ( 2 5 3 4) и сравниваем ее с 2ой строкой (1 4 5 3) поэлементно, тут получаем 2>5, 5>4, 3<5, 4>3, посколько не все цифры первой строки больше либо равны цифрам 2ой строки, то условие не выполнилось и эти строки остаются.
2) берем строку 1 ( 2 5 3 4) и сравниваем ее с 3й строкой (2 3 4 3) тут снова ткая же ситуация, 3<5 следовательно все остаются..
3) мы снова берем 1 строку и сравниваем ее с 4й... и т.д....
после чего берем 2ю строку (1 4 5 3) и сравниваем ее с 1 (2 5 3 4) условие не выполнилось (>=) следовательно обе строки остались.... и т.д.
тут же доходим до сравнения с 8ой строкой:
1 4 5 3 и 8ая строка (1 3 5 2) каждый элемент 2ой строки больше либо равен элементу 8ой строки. следовательно 8ая строка удаляется из рассмотрения и не выводится на экран.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2016, 00:36
Привет! Вот еще темы с ответами:

Удаление двумерного динамического массива MSVS - C++
Здравия желаю. При работе с двумерными динамическими массивами столкнулся со странной ошибкой. Если попытаться удалять массив...

Корректное удаление двумерного динамического массива - C++
Доброго времени суток. В программе имеется двумерный динамический массив. Особенность его в том, что часть строк имеет больше столбцов,...

Удаление колонки (столбца) из динамического двумерного массива - C++
Сколько ни пытался, не смог понять/придумать как удалить столбец. Строка удаляется элементарно, но как это сделать со столбцом? 30 строка. ...

Удаление строки или столбца из двумерного массива - C++
Собственно сабж. Как это сделать? Есть какие то методы? Например удалить из массива строку содержащую хоть одну еденицу.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru