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