Форум программистов, компьютерный форум CyberForum.ru

Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
12.01.2013, 02:05     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #1
Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию.
на языке С++, через цикл for, самым легким способом, я только начинаю учить язык
пожалуйста..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 02:05     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию
Посмотрите здесь:

C++ Удалить из массива минимальное количество элементов, чтобы массив стал упорядочен по возрастанию
В каждом столбце обнулите минимальное количество элементов так, чтобы сумма элементов столбца не превышала заданную C++
Требуется вычеркнуть минимально возможное количество чисел так, чтобы оставшиеся числа шли в порядке возрастания C++
C++ Удалить из массива число, у которого наибольшая сумма цифр и отсортировать оставшиеся элементы
C++ Переписать файл так, чтобы сначала шли положительные, потом отрицательные числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
12.01.2013, 02:15     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #2
Что значит удалить из массива? Массив это последовательность битов, условно пронумерованных группами... Можно только пересоздать массив с новой размерностью, если хочешь свободное удаление каждого его элемента, то лучше посмотреть в сторону двусвязного списка...
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
12.01.2013, 02:19  [ТС]     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #3
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6 9

Добавлено через 44 секунды
удаленные заменить "0"
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.01.2013, 02:24     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #4
а что, попроще задачки для изучения языка не мог взять? Полно же книжек! Тут не всё так просто.
Можно сделать цикл, конечно
C++
1
2
for(i=0; i<n-1; i++)
if (a[i]>a[i+1]) remove(i);
Но это решение, ясен пень, не минимальное число элементов удалит.
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
12.01.2013, 02:28     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #5
А так все просто:
C++
1
2
3
4
5
6
7
for(int i = 0; i < <array_size> - 1; i++) {
int position;
if(array[i] >= array[i+1]) {
 position = i;
 здесь создаешь динамический массив, с размерность на один меньше и циклом while копируешь все элементы, кроме [position]
}
}
В итоге на выходе получишь динамический массив с возрастающими числами.

Добавлено через 1 минуту
Код не претендует на изящность и быстродействие, а так же на грамотную выборку чисел для удаления, но с помощью for - это, по-моему, проще всего.
ramybozy
8 / 8 / 0
Регистрация: 01.07.2012
Сообщений: 138
12.01.2013, 02:29     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #6
To Kuzia

Это вообще никакое не решение.
Вот простой контрпример.

100, 3, 2, 101, 102
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
12.01.2013, 02:29     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #7
Цитата Сообщение от VlaDdislav Посмотреть сообщение
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6 9

Добавлено через 44 секунды
удаленные заменить "0"
Раньше не мог написать?!
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.01.2013, 02:30     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #8
Цитата Сообщение от contedevel Посмотреть сообщение
А так все просто:
в том то и дело, что не факт, что верно.
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
12.01.2013, 02:31     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #9
Сделай как написали, только в
C++
1
if(....) {array[i] = 0;}
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
12.01.2013, 02:33  [ТС]     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #10
Цитата Сообщение от contedevel Посмотреть сообщение
Раньше не мог написать?!
извени)
сможешь помочь?
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
12.01.2013, 02:33     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #11
Если хочешь, чтобы программа работала корректно, то for лучше не использовать, иначе код будет очень объемный и запутанный.
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
12.01.2013, 02:36  [ТС]     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #12
можешь пожалуйста дать код, а то я совсем чтот запарился..

Добавлено через 1 минуту
я ток for и while учил
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
12.01.2013, 02:43     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #13
C++
1
2
3
4
5
for(int i = 0; i < <array_size> - 1; i++) {
if(array[i] >= array[i+1]) {
 array[i] = 0;
}
}
Думаю, для большинства случаев будет корректно выполнятся, хотя честно не могу сейчас точно рассмотреть все случаи - сплю уже

Да, где <array_size> - это нужно размер массива указать любым способом...

Добавлено через 3 минуты
Извини, не пиши этот код, сейчас нормальный выложу...
ramybozy
8 / 8 / 0
Регистрация: 01.07.2012
Сообщений: 138
12.01.2013, 02:48     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #14
Как минимум, тут необходимо найти все промежутки монотонности, но и все равно до решения будет еще далеко.
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
12.01.2013, 02:51     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #15
Числа только положительные или нет?
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
12.01.2013, 02:54     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #16
Все просто, как уже был дан пример:
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6 0 0 0 0 9

Каждый элемент массива должен быть больше предыдущего, если действие выполняется - идем дальше, а если нет - записываем в эту ячейку 0... Что мудрить то... Если условие правильное конечно

И вариант реализации данного "алгоритма" есть выше.
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
12.01.2013, 02:59     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #17
Можно, найти два рядом стоящих подмассива, в которых элементы возрастают, сравнить их размерности и обнулить в наименьшем все элементы, которые больше или меньше первого или последнего элемента наибольшего массива, зависит от позиции слева или справа наибольший. Нули игнорировать в подмассивах. Делать пока размерность подмассива не станет равна массиву, За цикл for забудь, это ужас просто будет...лучше while.

такая программа будет работать корректно, извини, но код довольно большой будет писать не буду, если нужно будет в личку напиши, завтра тогда напишу...
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.01.2013, 03:01     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #18
а почему именно
которые больше или меньше первого или последнего элемента наибольшего массива,
может надо обнулить этот самый наименьший + все которые меньше предпоследнего, и тогда выйдет оптимальнее


0 1 2 3 8 1 2 3 4 5 9 10
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
12.01.2013, 03:03     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #19
Ну, размерность подмассива должна стать равна размерности массива, исключая нулевые элементы естественно)

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а почему именно может надо обнулить этот самый наименьший + все которые меньше предпоследнего, и тогда выйдет оптимальнее


0 1 2 3 8 1 2 3 4 5 9 10
Тогда будет ситуация, когда программа удалит подходящие элементы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 03:09     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию
Еще ссылки по теме:

C++ Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию
Сортировка массива вставкой, чтобы четные числа шли по возрастанию, а нечетные по убыванию C++
C++ Переставить строки в массиве так, чтоб они шли по возрастанию их сумм

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.01.2013, 03:09     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию #20
пример 0 1 2 3 8 2 3 4 5 9 10

твоя программа выделит 2 подмассива
0 2 3 8
2 3 4 5 9 10
Рассмотрит, из какого лучше удалить лишние элементы
если из первого, то результат 0 2 2 3 4 5 9 10
если из второго, то результат 0 2 3 8 9 10
и твоя программа выдаст тот, что длиннее 0 2 3 4 5 9 10
верный же вариант 0 1 2 2 3 4 5 9 10
Yandex
Объявления
12.01.2013, 03:09     Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию
Ответ Создать тему
Опции темы

Текущее время: 04:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru