Help! на большее фантазии не хватило

  • Автор темы Автор темы Myc0n
  • Дата начала Дата начала
M

Myc0n

Нужно сделать так, чтобы если икс неравен нулю, то выполнялась операция 1 разделить на икс.
Пишу:
[codebox]if round(x)<>0 then
begin
y:=1/x;[/codebox]
Когда икс становится нулем, программа пишет, что деление на ноль запрещено.
Что не так?
Заранее спасибо :)
end;
end.
 
А x какого типа? Учитывая, что используется round, могу предположить что real. Так вот такой код у меня работает:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
x, y: real;
begin
x:= 0;
if round(x)<>0 then
begin
y:=1/x;
end;
end;

А у Вас что?
 
Вот весь код:
[codebox]var
Form1: TForm1;
x,y:real;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
x:=x+1;
if x<>0 then
begin
y:=1/(x-40);
paintbox1.Canvas.Pixels[round(x),round(y)]:=clred;
end;
end;

end.[/codebox]
Вроде все как на ладони, а не получается. :)

Да, у меня тоже real, как видите
 
Ну, вообще-то, исключение "Деление на 0" появится когда х = 40, поэтому проверка икса на ноль как бы бессмысленно. Нужно бы так:

Код:
var
Form1: TForm1;
x,y:real;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
x:=x+1;
if (x-40) <> 0 then // или if x <> 40 then
begin
y:=1/(x-40);
paintbox1.Canvas.Pixels[round(x),round(y)]:=clred;
end;
end;

end.
 
Точно!!! Спасибо, добрый человек, ступил я немного!! :rolleyes:
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab