| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++|Pascal] Операции с массивом |
| Автор: Aliance 12.2.2007, 02:00 |
| Массив модифицировать таким образом что бы суммы элементов в модифицированном массиве располагающихся на равном удалении от начала и конца массива возрастали с удалением пары элементов от концов массива. Примечания: • под массивом понимается массив из 50 элементов. Элементы целые, положительные, меньше 26; • ввод данных осуществляется из файла, файл генерируется отдельной программой с возможностью ввода как случайных элементов, так и с клавиатуры; |
| Автор: Strannik 12.2.2007, 12:28 | ||
| Ну что-то вроде такого: было 1 2 3 4 5 6 стало 1 3 5 6 4 2 1+2>3+4>5+6 Добавлено @ 12:35 Если можно использовать доп. массив, то вроде просто:
|
| Автор: JAPH 12.2.2007, 12:41 | ||
А я сделал так:
|
| Автор: Aliance 12.2.2007, 15:37 |
| Ребят, код написать я бы смог сам впринципе, тут в том-то и главная трудность - понять как сделать это и написать алгоритм. И еще, к сожалению, доп. массив использовать нельзя. Помогите, если сможете, за мной не заржаваеет |
| Автор: volvo877 12.2.2007, 16:13 |
1. Упорядочиваем массив по возрастанию/убыванию 2. Массив вида <1, 2, 3, 4, 5, 6, 7, 8> приводим к виду <1, 3, 5, 7, 8, 6, 4, 2>, то есть в первой половине его должны храниться только элементы с нечетными индексами отсортированного массива, упорядоченные по возрастанию, а во второй - только с четными индексами, упорядоченные по убыванию... |
| Автор: JAPH 12.2.2007, 16:43 | ||||||
Если я правильно понял задачу, то мой алгоритм такой. Рассматриваем (не создаём, а просто рассматриваем) массив, содержащий суммы элементов нашего массива a, равноудалённых от концов массива:
Задача модифицирования a выражается в сортировке массива b. Ведь если мы упорядочим элементы b по возрастанию, то мы упорядочим суммы элементов a в требуемом порядке. Сортировка b может быть такой (пузырёк):
Теперь переложим эту сортировку на a:
Вот и всё. Чей способ проще - не знаю. Если что-то непонятно, уточняем, что конкретно вызывает затруднения, и спрашиваем. |
| Автор: Strannik 12.2.2007, 21:15 |
| JAPH, Всё это очень неплохо, но только в случае если требуется отсортировать по неубыванию. Если строго по возрастанию - обвалится на банальном тесте: "1 2 3 4 5 6". Твой алгоритм оставит массив без изменений, а это неверно. П.С. Если я не так понял алгоритм - заранее прошу прощения. |
| Автор: JAPH 12.2.2007, 22:33 |
| Да, тогда, пожалуй, ваш способ лучше. |
| Автор: Aliance 13.2.2007, 21:07 |
| А вы учли, что чисел может быть нечетное количество? Могут быть все нули, все одинаковые и т.д. В общем я так и не прочитал словестного алгоритма |
| Автор: Dov 15.2.2007, 00:44 | ||||
Предлагаю так. Ищем минимальный эл-т, и меняем его местами с крайним левым, увеличивая индекс крайнего левого эл-та, потом опять ищем минимальный эл-т среди оставшихся, и меняем его местами с крайним правым эл-том, уменьшая индекс крайнего правого эл-та и т.д., пока индексы правого и левого не сравняются. Короче, легче код написать, чем на пальцах показывать. Ну, что-нибудь такое, например.
|