![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
ipconnect |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Столкнулся с проблемой такого порядка. Как ни крутил, решить оптимально не получается. Требуется мозговой штурм коллективного разума. Задача выглядит следующим образом.
Имеется одномерный массив с N ячейками. Необходимо, казалось бы, просто сделать следующее. По заданному максимальному взятому для использования количеству ячеек M (<=N), начинающихся с первой от начала массива, необходимо менять значения в них следующим образом. Объяснить могу только на примере. Т.е. в начале необходимо взять две первые ячейки. Изначально в первую записать 1, во вторую - на единицу больше. Затем надо менять значение во второй ячейке до некоторого числа K (к примеру, 30)... Выглядит это так 1 2 1 3 ... 1 30 Будут образовываться пары чисел, которые нужно потом будет сохранить. Но это уже к делу не относится. Тут бы сделать основное. Далее, когда значение во второй ячейке достигнет К, надо значение в первой ячейке увеличить на 1. И повторить цикл заново. Т.е. 2 3 2 4 ... 2 30 и т.д. До того момента пока последняя пара будет К-1 К (в примере 29 30). Далее необходимо включить в цикл третью ячейку. И сделать тот же самый цикл по тем же самым критериям изменений. Т.е. изначально это 1 2 3, потом 1 2 4 ... вплоть до К-2 К-1 К (28 29 30). Итак пока мы не заполним все три ячейки таким перебором. Потом четыре ячейки и т.д. Перебор из M ячеек закончится тогда, когда последним набором чисел будет K-M+1 K-M ... K-2 K-1 K Думал, что просто. Справлюсь на раз-два-три. Оказалось не всё так просто, как кажется. Задача имеет практическое значение, поэтому бросить не могу. Нужно решить. Сам не в состоянии. Впервые попал в ступор при решении подобных задач. Помогите выбраться из тупика. |
![]() ![]() |
Федосеев Павел |
![]()
Сообщение
#2
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 298 Пол: Мужской Реальное имя: Федосеев Павел Репутация: ![]() ![]() ![]() |
Оно?
program Counter30; |
ipconnect |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Оно? program Counter30; Почти ... гениально. Увы, почти. Я даже до этого не дошёл. Где-то в коде неточность есть. Я вывел результат в тестовый файл. По циклу всё идёт правильно до позиции 1 33 36 После неё должна следовать группа 1 34 35 Однако, почему-то идёт 2 3 4 и т.д. Т.е. теряются группы 1 34 35 1 34 36 1 35 36 Тоже самое происходит и после группы 2 33 36 За ней следует не 2 34 35 2 34 36 2 35 36 а аналогичная по логике, но неправильная по сути задачи 3 4 5 Итак в конце каждого цикла по первому числу в тройках. Кроме последних троек, которые должны были оканчивать в таком порядке 33 34 35 33 34 36 33 35 36 34 35 36 а фактически получилось 32 33 36 33 34 35 33 34 36 34 35 36 Т.е. по трём чисел после пары циклы заканчиваются на ... 33 36 вместо ... 35 36. Потом на четырёх позициях происходит тоже самое нарушение логики при смене цикла на второй позиции. Т.е. за 1 2 31 36 должно следовать 1 2 32 33 и т.к., а идёт 1 3 4 5. Получается из логики выпадают группы 1 2 32 33 1 2 32 34 1 2 32 35 1 2 32 36 1 2 33 34 1 2 33 35 1 2 33 36 1 2 34 35 1 2 34 36 1 2 35 36 Цикл по первой позиции переключается с 1 32 33 36 на 2 3 4 5, пропуская ряд групп чисел. Т.е. цикл по третьей позиции заканчивается на ... ... 31 36 вместо ... ... 35 36. И наконец, включается пятая позиция и ...её хватает всего на интервал 1 2 3 4 5 ... 1 2 3 4 36. Всё. Где же недочёт. Не могу найти. Добавлено через 13 мин. Т.е. получается такой вот файл... Вместо К=10 я взял 36 ... Но сути дело не меняет. М тоже самое оставил. Сообщение отредактировано: ipconnect - 20.04.2015 22:08 Прикрепленные файлы ![]() |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 5:01 |