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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 21:25   #1
Alexandra1991
 
Регистрация: 18.10.2010
Сообщений: 9
По умолчанию предусмотреть невозможность деления на 0

Задание было такое :
Вывести на экран таблицу 1/sin(x),1/cos(x),1/(sin(x)·cos(x)) (по горизонтали), при изменении аргумента от 0° к 180° с шагом 10° (выведение по вертикали). В программе предусмотреть невозможность деления на 0.

Вопрос: как предусмотреть невозможность деления на ноль?

Код:
Program 
uses crt;
var i,k:integer;
a,b:real;
begin
clrscr;
writeln(' x 1/sin(x) 1/cos(x) 1/(sin(x)*cos(x))');
writeln;
a:=sin(k*pi/180);
b:=cos(k*pi/180);
for i:=0 to 180 do begin 
k:=0+i*(10); 
a:=sin(k*pi/180);
b:=cos(k*pi/180);
if k>180 then break;
if (a=0) or (b=0) then continue; 
writeln(k:6, 1/a:12:4, 1/b:14:4,1/a*b:16:4);
end;
readln;
end.

Последний раз редактировалось Stilet; 08.11.2010 в 09:12.
Alexandra1991 вне форума Ответить с цитированием
Старый 07.11.2010, 21:29   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

как насчет try?
fbus вне форума Ответить с цитированием
Старый 07.11.2010, 22:37   #3
Alexandra1991
 
Регистрация: 18.10.2010
Сообщений: 9
По умолчанию

можете обьястнить как его использовать?
Alexandra1991 вне форума Ответить с цитированием
Старый 08.11.2010, 07:37   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
try     
   //  Здесь то, где возможна исключительная ситуация
   // В Вашем случае это формула с делением
except
   //  Здесь Ваши действия в случае возникновения ошибки
   // Например, можно сообщить пользователю, что параметры введены неверно 
end;
Второй вариант это разбить формулу на части. В Вашем случае деление на нуль возникнет в случае когда синус х или косинус х =0. Но ведь это же можно отследить заранее. Для этого нужно проверить Ваши а и b, то есть если а=0 или b=0, то будет деление на нуль.
В принципе можно попытаться исправить это:
Цитата:
if (a=0) or (b=0) then continue;
А вообще если внимательно смотреть алгоритм, то у Вас и так это предусмотрено. Continue начианет следующую итерацию цикла, поэтому само деление и не происходит.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 08.11.2010 в 07:49.
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
предусмотреть исключительные ситуации в с массивами Kurai Помощь студентам 1 17.03.2010 08:26
Предусмотреть задание параметров функции «по умолчанию» и с клавиатуры. R@Ziel Помощь студентам 2 01.12.2009 00:29
Компиляция комментариев, невозможность отладки (F7) Alex Cones Общие вопросы Delphi 4 24.11.2009 18:55