![]() |
Модераторы: Alx, Fixin |
![]() ![]() ![]() |
|
Akina |
|
||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 2 Всего: 454 |
Постановка задачи:
Необходимо дописать программу так, чтобы она при запуске ВСЕГДА давала сообщение "True". Программа должна состоять из двух модулей и запускаться процедурой Main(). Текст первого модуля дан, и его изменять нельзя. Необходимо написать текст второго модуля. В чём суть программы: В программе создаётся массив элементов логического типа случайного (от 100 до 1000) размера. Он заполняется случайным образом. Затем процедуре (которую следует написать) сообщается количество элементов (нижняя и верхняя границы) и количество элементов True в массиве. Процедура может инвертировать любые элементы массива, но не может узнать значения элементов массива либо иные не переданные ей явно значения. В результате своей работы она должна вернуть место, где следует поделить массив (некоторые или все элементы которого ею инвертированы) на две части. В получившихся частях должно быть равно либо количество значений True (справа и слева одинаковое), либо количество значений False. В этом случае программа выводит сообщение "True". Если равенства нет, или сообщённая точка деления массива на части находится за границами массива, программа выводит "False". Вот текст Module1.BAS
Вот заготовка текста второго модуля Module2.BAS
Задача ориентирована на решение в среде VB6, но может быть решена и на VBA в любом Офисном приложении. PS. Кратчайшее известное мне решение содержит 5 строк кода. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
maxdiver |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 2 Всего: 18 |
1) зачем вообще VB? решение вообще от языка не зависит. для разнообразия что ле?
![]() 2) код местами довольно забавный: Not (Arr(i) Xor CheckValue) - а почему не просто = ? ![]() 3) здесь, я так понимаю, варианты решения публиковать не надо, т.к. это разрушит интригу для других решателей? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 2 Всего: 454 |
1) В каком виде оно ко мне попало, в таком и выложил. Только дополнил несколько комментов.
2) См. п. 1. 3) Не знаю... кто-то же должен когда-нить запостить решение... PS. Решение в 5 строк кода я всё-таки нашёл... сам... не смотря в подсказку. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
maxdiver |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 2 Всего: 18 |
Я не понял, заакцептил Akina моё решение или нет, но вроде есть в 4 строчки
![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 2 Всего: 454 |
Да, частично. Потому что у тебя в ответе использована не определённая переменная. Её определение даст пятую строку.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
maxdiver |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 2 Всего: 18 |
Akina
Хм, а в VB обязательно объявлять переменные? В том Бейсике, который я изучал в дремучем детстве, переменные сами создавались при первом использовании ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 2 Всего: 454 |
См. строку 2 первого модуля.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
LOD77 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.5.2009 Репутация: нет Всего: 1 |
Может быть я чего-то не понял, но это же классическая задача про фишки "реверси" на столе.
В таком случае получается 4 строки: FOR i=Low TO Low+Count-1 Call Invert(i) NEXT i GetBound = Low+Count-1 Вроде бы все. Массив делим на 2 части от эл-та Low до Low+Count-1 включительно и оставшаяся часть от Low+Count до High Или я чего-то недопонял? |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |