unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
var
x, y, scale: Double;
i: Integer;
begin
scale := 50;
with Canvas do begin
Pen.Color := clBlack;
MoveTo(ClientWidth / 2, 0);
LineTo(ClientWidth / 2, ClientHeight);
MoveTo(0, ClientHeight / 2);
LineTo(ClientWidth, ClientHeight / 2);
Pen.Color := clRed;
x := -5;
y := exp(x) * cos(x);
MoveTo(ClientWidth / 2 + x * scale, ClientHeight / 2 - y * scale);
for i := 1 to Round(ClientWidth / 2 / scale) do begin
x := x + 0.1;
y := exp(x) * cos(x);
LineTo(ClientWidth / 2 + x * scale, ClientHeight / 2 - y * scale);
end;
end;
end;
end.
Другие языки программирования и технологии
Что не так в коде
Код представляет собой реализацию обработчика события OnPaint формы TForm1 в среде разработки Delphi. Цель кода - нарисовать график функции y = e^x * cos(x) на форме.
Однако, в коде отсутствует объявление директивы uses для подключения модуля Math, который содержит функцию Exp. Это может привести к ошибке компиляции. Для решения проблемы нужно добавить модуль Math в секцию uses
акже, код не содержит проверки деления на ноль при использовании переменной scale в строке MoveTo(ClientWidth / 2 + x * scale, ClientHeight / 2 - y * scale). Если scale равен нулю, это может привести к ошибке выполнения программы
Вот правильно
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Math;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
var
x, y, scale: Double;
i: Integer;
begin
scale := 50;
with Canvas do
begin
Pen.Color := clBlack;
MoveTo(ClientWidth div 2, 0);
LineTo(ClientWidth div 2, ClientHeight);
MoveTo(0, ClientHeight div 2);
LineTo(ClientWidth, ClientHeight div 2);
Pen.Color := clRed;
x := -5;
y := exp(x) * cos(x);
if scale <> 0 then
MoveTo(Round(ClientWidth / 2 + x * scale), Round(ClientHeight / 2 - y * scale));
for i := 1 to Round(ClientWidth div 2 / scale) do
begin
x := x + 0.1;
y := exp(x) * cos(x);
if scale <> 0 then
LineTo(Round(ClientWidth / 2 + x * scale), Round(ClientHeight / 2 - y * scale));
end;
end;
end;
end.
Однако, в коде отсутствует объявление директивы uses для подключения модуля Math, который содержит функцию Exp. Это может привести к ошибке компиляции. Для решения проблемы нужно добавить модуль Math в секцию uses
акже, код не содержит проверки деления на ноль при использовании переменной scale в строке MoveTo(ClientWidth / 2 + x * scale, ClientHeight / 2 - y * scale). Если scale равен нулю, это может привести к ошибке выполнения программы
Вот правильно
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Math;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
var
x, y, scale: Double;
i: Integer;
begin
scale := 50;
with Canvas do
begin
Pen.Color := clBlack;
MoveTo(ClientWidth div 2, 0);
LineTo(ClientWidth div 2, ClientHeight);
MoveTo(0, ClientHeight div 2);
LineTo(ClientWidth, ClientHeight div 2);
Pen.Color := clRed;
x := -5;
y := exp(x) * cos(x);
if scale <> 0 then
MoveTo(Round(ClientWidth / 2 + x * scale), Round(ClientHeight / 2 - y * scale));
for i := 1 to Round(ClientWidth div 2 / scale) do
begin
x := x + 0.1;
y := exp(x) * cos(x);
if scale <> 0 then
LineTo(Round(ClientWidth / 2 + x * scale), Round(ClientHeight / 2 - y * scale));
end;
end;
end;
end.
Леонид Бражников
спасибо огромное
То что я в нем ничего не понимаю
Нрня
Похожие вопросы
- Вопрос по основам машинного кода и бинарного кода. Как это работает в своей основе?
- Ассемблерная вставка в С .Странный код. Можете расшифровать?
- как прописать bat код в сайт
- Что для вас "говно код" ?
- как научиться писать хороший код? В смысле я даже не понимаю что такое хороший код. Что такое хороший код?
- ООП это когда данные управляют кодом а функциональное когда код данными?
- Получение опыта в области программирования (архитектура программы, качество кода).
- Как понять машинный код ?(Компилятор переводит исходный код компьютерной программы в машиный код).
- Помогите, лёгкий код C++
- [Машинный код] Как?