![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Artem7 |
![]() ![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот написал программу для нахождения 4 совершенных чисел на отрезке, но почему то когда ввожу 1000 то происходит зацикливание (возможно и в других случаях просто не проверял больше)
Program sovershenie; |
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
А что, K при каких-то условиях станет равно 4, чтобы выйти из цикла? Не станет, в интервале 2 .. 1000 всего 3 совершенных числа. Вот цикл и будет крутиться вечно, в попытках найти четвертое, несуществующее... Зачем тебе вообще цикл While - непонятно. Убери его.
P.S. Этот алгоритм поиска совершенных чисел подходит только для небольших интервалов. Чем интервал шире - тем дольше будет осуществляться поиск. Тогда совершенные числа стоит искать вот так Сообщение отредактировано: IUnknown - 16.03.2012 12:35 |
Artem7 |
![]() ![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Мужской Репутация: ![]() ![]() ![]() |
А что, K при каких-то условиях станет равно 4, чтобы выйти из цикла? Не станет, в интервале 2 .. 1000 всего 3 совершенных числа. Вот цикл и будет крутиться вечно, в попытках найти четвертое, несуществующее... Зачем тебе вообще цикл While - непонятно. Убери его. P.S. Этот алгоритм поиска совершенных чисел подходит только для небольших интервалов. Чем интервал шире - тем дольше будет осуществляться поиск. Тогда совершенные числа стоит искать вот так В том то и дело что мне преподаватель сказал ввести счётчик чтобы заканчивался когда 4 совершенных найдёт...так без него конечно корректнее всё было бы... Добавлено через 3 мин. Спасибо терь всё понятно стало почему зацикливается)))пусть так и будет раз ему так надо)))Спасибо))) |
TarasBer |
![]()
Сообщение
#4
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> В том то и дело что мне преподаватель сказал ввести счётчик чтобы заканчивался когда 4 совершенных найдёт...
Ты его не туда поставил. У тебя сначала перебираются ВСЕ числа до эн, а потом проверяется счётчик. А надо проверять его постоянно:
-------------------- |
Artem7 |
![]() ![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Мужской Репутация: ![]() ![]() ![]() |
> В том то и дело что мне преподаватель сказал ввести счётчик чтобы заканчивался когда 4 совершенных найдёт... Ты его не туда поставил. У тебя сначала перебираются ВСЕ числа до эн, а потом проверяется счётчик. А надо проверять его постоянно:
Спасибо но я замутил вот так Program sovershenie; |
TarasBer |
![]()
Сообщение
#6
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Спасибо но я замутил вот так
Фигню ты замутил. Зависон на случай, если чисел до эн меньше 4, никуда не делся. -------------------- |
Artem7 |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
TarasBer |
![]()
Сообщение
#8
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
никого зависона если что опять же идёт по новому проверка и выдаёт те же совершенные числа что и нашёл до этого....лучше всматриваться в прогу надо было) А, ну да, извини. Но он выводит те же числа снова, ты считаешь это корректным? Это в любом случае ты написал неверный алгоритм. -------------------- |
Artеm |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
да он станет верным тогда когда уберешь ограничение в 4 а просто вывод того сколько в диапозоне :-)
|
TarasBer |
![]()
Сообщение
#10
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> да он станет верным тогда когда уберешь ограничение в 4 а просто вывод того сколько в диапозоне :-)
Твой код не подходит под техзадание. Отмазы типа "оно будет верным под другое ТЗ" никому не интересны. -------------------- |
Artеm |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
> да он станет верным тогда когда уберешь ограничение в 4 а просто вывод того сколько в диапозоне :-) Твой код не подходит под техзадание. Отмазы типа "оно будет верным под другое ТЗ" никому не интересны. ну если подумать то как он подойдет если например я введу число n равное 100 то там всего 2 совершенных числа то как тогда должна программа найти еще 2? |
IUnknown |
![]()
Сообщение
#12
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата если например я введу число n равное 100 то там всего 2 совершенных числа то как тогда должна программа найти еще 2? Да не должна она искать еще 2... Программа должна вывести МАКСИМУМ 4 совершенных числа (если четырех нет - то вывести ровно столько, сколько есть), а не из любого интервала высасывать 4 штуки, даже если их там совсем нет. Для интереса попробуй ввести n = 5, посмотрим, откуда тогда твой код найдет 4 совершенных числа. |
Artem7 |
![]() ![]()
Сообщение
#13
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да не должна она искать еще 2... Программа должна вывести МАКСИМУМ 4 совершенных числа (если четырех нет - то вывести ровно столько, сколько есть), а не из любого интервала высасывать 4 штуки, даже если их там совсем нет. Для интереса попробуй ввести n = 5, посмотрим, откуда тогда твой код найдет 4 совершенных числа. Ну если только так то тогда будет вот так Program sovershenie; |
TarasBer |
![]()
Сообщение
#14
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Во, теперь верно написал.
-------------------- |
Artem7 |
![]()
Сообщение
#15
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо всем за помощь)))просто не правильно понял постановку задачи)))
|
![]() ![]() |
![]() |
Текстовая версия | 11.06.2024 17:36 |