• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

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

Myc0n

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

Poseidon

А 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;

А у Вас что?
 
M

Myc0n

Вот весь код:
[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, как видите
 
P

Poseidon

Ну, вообще-то, исключение "Деление на 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.
 
M

Myc0n

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!