Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 00:58   #1
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
Вопрос Division by zero на Turbo Pascal

Как можно обработать ошибку при делении на ноль целых чисел? Мне нужно что-то типа этого
Код:
{$I-}
Read(x);
{$I+}
if IOResult <> 0 then ...
только для ошибки Divide by zero.
Kingdom_Reborn вне форума Ответить с цитированием
Старый 27.10.2010, 01:03   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а может проще проверить делитель?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.10.2010, 01:12   #3
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

У меня есть функция F, описанная как функция, она вычисляет значение. Вывожу я значение как WriteLn(F([параметры])). Так вот в этой функции может случиться деление на ноль, как его обработать? Можно было бы завести логическую переменную и по ней определять, но вывод у меня напрямую: WriteLn(F(...)), поэтому проверить значение этой логической переменной не удастся, а вызывать заранее функцию F не хочется. Вывод должен быть именно какой есть...
Kingdom_Reborn вне форума Ответить с цитированием
Старый 27.10.2010, 01:16   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а внутри функции проверку сделать не дано?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.10.2010, 01:37   #5
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

можно, конечно, но я хотел бы что-нибудь типа
Код:
{$Ё-}
WriteLn(F(...));
if Ошибка then WriteLn('не определено');
{$Ё+}
Kingdom_Reborn вне форума Ответить с цитированием
Старый 27.10.2010, 09:36   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,821
По умолчанию

Код:
try
 F();
except
  on EZeroDivide do Ezhik();
end;
p51x вне форума Ответить с цитированием
Старый 27.10.2010, 13:17   #7
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
try
 F();
except
  on EZeroDivide do Ezhik();
end;
На Паскале нет try...except
Kingdom_Reborn вне форума Ответить с цитированием
Старый 27.10.2010, 13:20   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Именно поэтому рекомендую не морочить башню думой, и воспользоваться IFами
Можно на паскале умудрится прикрутить обработчик, но тут малой кровью не отделаешся.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 2009 IBX и Firebird - Division by zero mid БД в Delphi 0 09.07.2010 11:26
Turbo Pascal or Pascal ABC Ikram Паскаль, Turbo Pascal, PascalABC.NET 0 27.04.2010 13:44
Turbo Pascal Ikram Помощь студентам 2 25.04.2010 10:26
Turbo Pascal glavad Помощь студентам 5 14.12.2009 00:41
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28