![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
KasMP |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: 1 Всего: 30 |
Здравствуйте, товарищи программисты!
![]() Проходим Паскаль, контрольная по теме "Функции". У меня проблема не в паскале, а в самом алгоритме. ![]() Задачка звучит так: ![]()
Взгляните, пожалуйста, на мой набросочек и скажите, какие мысли ![]()
Заранее благодарю уже за внимание! ![]() |
||||
|
|||||
KasMP |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: 1 Всего: 30 |
Здравствуйте, товарищи программисты!
![]() Проходим Паскаль, контрольная по теме "Функции". У меня проблема не в паскале, а в самом алгоритме. ![]() Задачка звучит так: ![]()
Взгляните, пожалуйста, на мой набросочек и скажите, какие мысли ![]()
Заранее благодарю уже за внимание! ![]() Это сообщение отредактировал(а) KasMP - 17.11.2007, 19:30 |
||||
|
|||||
esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 1 Всего: 14 |
Раздел по алгоритмам. А у вас вопрос по анализу кода?
Ничего не понимаю -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
KasMP |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: 1 Всего: 30 |
esperant0, возможно, моя низкая квалификация дала о себе знать... Не судите строго студента.
Но вообще я имела в виду, что не могу составить часть алгоритма. В коде это место записано так:
А сам код приведен для того, чтобы вы могли оценить рациональность других частей алгоритма. Кстати, спасибо за попытку понять! Это сообщение отредактировал(а) KasMP - 17.11.2007, 20:01 |
|||
|
||||
primax |
|
||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 29.12.2006 Где: НТУУ-КПИ.Киев Репутация: нет Всего: нет |
Я не совсем понимаю условие задачи.
Зачем искать I по числам А или B раздельно, когда у тебя одно из этих чисел больше N? Ведь если К, L>0, то при A, B>N (одно из них или два сразу, без разницы) I>N полюбому. Я в условии не заметил ничего что мне бы говорило о раздельном поиске, сказано четко: I=K*A+L*B Если нужно организовать проверку на то что меньше, то я бы делал так:
А дальше, как по мне, самый простой вариант, это 2 вложеных логических цикла (вайл, репит) с проверкой "не проскочили ли мы условие I<N" и поочередным инкрементом L,K. Т.е. фактически тебе нужно организовать полный перебор выражения I=K*A+L*B используя твои условия по переменым K,L и константам A,B (константы - переменые которые не меняются на данном этапе, а не переменые-константы ![]() Но тут еще нюанс есть: А,В тоже должны быть больше 0. Иначе там просто вариантов бесконечность вариантов. Реализовал как я понял.
Если я не так понял все в итоге) То уточни условие конкретнее. Кстати, часные случаи желательно писать в самом алгоритме, а не отдельно, но если это конечно не увеличит масивность программы или кол-ва вычислений лишних. П.С. 17 число :О День студента ж ведь, какие могут быть дела)) Извини если с объяснениями запутал. Добавлено через 2 минуты и 33 секунды Можно убрать 3 присваевания, если поставишь 10 строку под 11 добавив begin и end для IF. |
||||
|
|||||
KasMP |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: 1 Всего: 30 |
Чтобы использовать функции... (задание по этой теме)
Бесспорно, это так ![]() |
||||
|
|||||
KasMP |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: 1 Всего: 30 |
Пожалуйста, посмотрите на плод моих трудов, суть которого сводится к следующему:
Спасибо за внимание! Добавлено через 4 минуты и 43 секунды Вот только незадача: если A=3, B=4, N=21, то программа выводит и I=22... Как вовремя остановить цикл? ![]() Это сообщение отредактировал(а) KasMP - 24.11.2007, 01:21 |
|||
|
||||
GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 4 Всего: 14 |
Вобщем то понятно, но пониманий складывается уж очень много... Где предел числе? и у A, B, N и у K c L ? Разьясни задачу подробнее и тебе помогут -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Давайте попробую объяснить. 1. Предел чисел A и B - можно взять беззнаковое целое, скажем, Word (я по паскалю мыслю), плюс учитываем, что они не превышают N. 2. Насчет предела K и L. Поскольку в формуле используется умножение этих чисел на два данных, плюс известно, что они неотрицательные (скажем, тот же тип Word), то складывается следующая мысль: поскольку числа A, B не могут быть отрицательными и не могут быть нулевыми (нуль в натуральные не входит, напомню), то:
Это сообщение отредактировал(а) mr.Anderson - 24.11.2007, 15:53 |
|||
|
||||
GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 4 Всего: 14 |
Спасибо конечно, но пропуская через цикл эти занчения, явно какой-то предел (100 или 100 000 например) должен существовать
![]() -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 16 Всего: 128 |
Дык. А я о чем речь вел? Вот алг (не проверял, правда...):
|
|||
|
||||
primax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 29.12.2006 Где: НТУУ-КПИ.Киев Репутация: нет Всего: нет |
Не заметил этого в условии изложеным тобой ![]() Хм. Задание реализовать программу используя подпрограммы (функции в даном случае)? или задание в том чтобы реализовать функции раздельного поиска (ну т.е. то что ты делала ![]() В принципе могу завтра, если будет время, твою задачку доделать используя твою логику (т.е. твою задумку для достижения результата). П.С. Кстати, там можно в 2 раза уменьшить сложно алгоритма (я про свой), если заметить что там после определеного момента идут симметричные результаты (вроде было так, не помню, неделю назад это заметил). ![]() |
|||
|
||||
KasMP |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: 1 Всего: 30 |
![]() Вроде так... Куда? ![]() ![]() (неужели я вообще ничего не понимаю? ![]() ![]() ![]() Вобщем, предел(A)=предел(B)=предел(N)=100 ![]() Вновь благодарю за прочтение моего полуламерского опуса. ![]() ![]() |
|||
|
||||
KasMP |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: 1 Всего: 30 |
"... где K и L - целые неотрицательные числа."
Первое.
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
ну и чего? берем и считаем:
A A+B A+2B A+3B... ... A+mB 2A 2A+B 2A+2B 2A+3B... ... 2A+nB 3A 3A+B ... pA+qB ... НОК(A,B) строки отсечки, помеченные жирно - это те, после которых следующая строка выскочит за пределы N. Если НОК(A,B)<N, то в момент рассчета НОК(A,B) все бОльшие этого значения представимые числа уже выведены ранее. Добавлено @ 18:51 В частности, легко доказать, что любое число, превышающее НОК(A,B) и делащееся на НОД(A,B), представимо в виде K*A+L*B, и соответственно если они взаимно просты (НОД=1), то любое число, превышающее A*B, представимо в виде K*A+L*B. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |