![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Евгений |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Здравствуйте!
Дана задача по вычислению факториала, с которой вроде справился, но есть ограничения: "тип обработанных данных-longint, если результат не помещается в 4 байта программа должна сообщить об этом" Вот что написал: Program Factoreal; Как добиться того чтобы программа сообщала о переполнении? Перепобовал многое, но в итоге только еще больше запутался. Может есть у кого какие идеи? Сообщение отредактировано: Евгений - 27.11.2010 20:44 |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Может есть у кого какие идеи? Тут не нужно никаких идей. 12! = 479001600 а 13! = 6227020800 Максимальное число, влезающее в longint есть 2147483647 (если я правильно помню)) То есть 12! влезает в 4 байта, а 13! уже нет. Если на вход получаешь число >12, то пишешь, что переполнение. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Евгений |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Ну это ,то что первое приходит в голову, ограничить ввод чисел после 12. Я думал, что есть еще какие то решения.
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Решения есть, но они либо для 32-битных компиляторов, либо для ассемблерных вставок. Я так понимаю, ни одно ни другое тебя не устроит?
|
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Ну это ,то что первое приходит в голову, ограничить ввод чисел после 12. Я думал, что есть еще какие то решения. Жень, ты бы направил мысль в нужное русло И сэкономил отвечающим время, если бы сразу написал, какое решение тебя устраивает, а какое - нет. А так - написанное (подробно) мной решение абсолютно соответствует условию.Внимание, вопрос! Где твое "спасибо"? ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Евгений |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Дико извиняюсь за не вежливость! Конечно же спасибо!
А по поводу какое решения устраивает, сам не знаю, заочник я, нахожусь от универа в 700 верстах и какое решение устроит преподователя неизвесно)). |
Krjuger |
![]()
Сообщение
#7
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Ну раз заочник,то когда получаеш задание,досканально выпытывай у преподавателя,чо именно ему надо,в каком виде представить.В общем пытай,пока сам досканально не поймеш,что от тебя требуется,либо пока тебе не дадут полную волю действия.Если не можеш во время получения задания,то возьми какое нибудь мыло у него или любую связь для контакта,чтобы всегда можно было утонить задание.
|
Lapp |
![]()
Сообщение
#8
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Извинения приняты.
Во время получения всего не учтешь, это невозможно. Но мне кажется, что всегда можно спросить по мылу. Тут же я имел в виду, что просто скзать о своих мыслях. Ты же даже привел прогу. Такая простая вещь как проверка if M>12 могла бы там быть, если тебе это приходило в голову. Ладно, проехали ![]() Напиши, в чем ты работаешь. Какой компилятор используешь? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Евгений |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Borland Turbo Pascal 7.0
|
Lapp |
![]()
Сообщение
#10
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Borland Turbo Pascal 7.0 Ммм... Ну, можно сделать вот так: {$R-} Этот способ будет работать, но мне он не нравится. Изврат это. Добавлено через 1 мин. И имей в виду (на всяк случай) - в FPC это не пойдет. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Кстати, способ, который работает в любом компиляторе:
var |
Lapp |
![]()
Сообщение
#12
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Кстати, способ, который работает в любом компиляторе: var Тут есть небольшая неопределенность (которая вряд ли где приведет к ошибке, впрочем), следующая из неопределенности длины мантиссы. Для пущей уверенности лучше использовать double или extended.. Но если уж использовать maxlongint (и, собсно, почему бы нет? оно, наверное, есть везде..)), то тогда лучше уж сделать так, мне кажется (без действительных типов): var -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Евгений |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Спасибо вам большое! Думаю сделать три варианта решения, а преподаватель пусть решает, какой его устроит)).
Связаться с ним не могу, т.к., я его даже не видел, задание получал на кафедре у секретаря. Есть еще один интересный для меня вопрос, но попробую его поискать, если не найду , тогда подниму в другой теме.. Сообщение отредактировано: Евгений - 30.11.2010 20:20 |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 9:26 |