Dimentre
@Dimentre
Начинающий

Как поставить ограничение на ln в edit?

Доброго времени суток!
Хотел сделать программу для табуляции двух функций, но столкнулся с проблемой. Если пользователь вводит данные для начала или конца отрезка в отрицательных значениях, то выдаёт фатальную ошибку о том, что не может ln быть меньше нуля. Как же сделать так, чтобы выдавалось сообщение о том, что вводимые данные не удовлетворяют условию, но программа продолжалась?
Вот код
procedure TForm1.Button2Click(Sender: TObject);
var x,y,y1,xn,xk,H: real;
begin
Memo1.ScrollBars:=ssVertical;
xn:=StrToFloat(Edit1.Text);
xk:=StrToFloat(Edit2.Text);
H:=StrToFloat(Edit3.Text);
Memo1.Lines.Add('Первая функция                 Вторая функция');
Memo1.Lines.Add('X          Y                   X          Y ');
x:=xn;
while x<=xk do
begin
y:=cos(x);
y1:=ln(x);
Memo1.Lines.Add(FloatToStrF(x,ffFixed,5,3)+'     '
+FloatToStrF(y,fffixed,5,3)+'             '
+FloatToStrF(x,fffixed,5,3)+'     '
+FloatToStrF(y1,fffixed,5,3));
x:=x+H;
end;
end;

Заранее спасибо!
  • Вопрос задан
  • 2321 просмотр
Пригласить эксперта
Ответы на вопрос 4
@mayorovp
Есть такая конструкция - try ... catch ... end. Почитайте про нее.
Ответ написан
Комментировать
@kalapanga
Плохая идея - игнорировать ошибки. Ваши программы с таким подходом будут вести себя непредсказуемо. Уж если нельзя вводить отрицательные числа, значит нельзя! Проверяйте это до начала вычислений, выдавайте пользователю предупреждение и только при корректном вводе начинайте расчёт Ваших таблиц.
Ответ написан
Комментировать
AnnTHony
@AnnTHony
Интроверт
Добавьте нужное вам условие:
вместо y1:=ln(x); можно написать
if ln(x) < 0 then
  y1 := 0; //или чему-то еще
else 
  y1:=ln(x)


Это хоть и не python, но форматировать код было бы тоже хорошим тоном.
Ответ написан
Комментировать
Логарифм вполне себе может быть меньше нуля, это его аргумент не может быть нулём или меньше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы