• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Графич. режим паскаль(или формула)

  • Автор темы Guest
  • Дата начала
G

Guest

Тут...вот...эээ....вообщем программа какбЭ не работает:
Построить график трактрисы
Код:
program graf_rezh;

uses crt, graph;

var gd, gm, a: integer;
x, y, phi: real;

BEGIN
clrscr;
gd:= detect;

initgraph(gd, gm,'');

If GrOk <> 0 Then exit;

SetBkColor(RED);
gd := GetMaxX div 2; gm := GetMaxY div 2;
phi := 0; a:= 60;

While phi <= pi do
Begin

x := (a * (cos(phi) + ln(sin(phi/2)/cos(phi/2)))) * cos(phi);
y := a * sin(phi) * sin(phi);


PutPixel(Round(x) +gd, Round(y) + gm, 1);
phi := phi + 0.01;
End;

readkey;
closegraph;
END.
Выводит код ошибки "200"(бабульки у подъезда мне сказали что 200 ошибка - эт деление на ноль)


Код:
  x := (a * (cos(phi) + ln(sin(phi/2)/cos(phi/2)))) * cos(phi);
Отсюда убераю логарифм - все норм. только трактриса на трактрису не похожа.

Тут наверно математику надо знать.
 
D

Dock1100

Что-то мне подсказівает что тут ошибка:
Код:
While phi <= pi do
Begin

x := (a * (cos(phi) + ln(sin(phi/2)/cos(phi/2)))) * cos(phi);
y := a * sin(phi) * sin(phi);


PutPixel(Round(x) +gd, Round(y) + gm, 1);
phi := phi + 0.01;
End;
Попробуйте так:
Код:
While phi <= pi do
Begin
if (phi<>180) then 
begin
x := a*(ln(sin(phi/2)/cos(phi/2))+cos(phi));
y := a * sin(phi);
PutPixel(Round(x) +gd, Round(y) + gm, 1);

x:=-x;
PutPixel(Round(x) +gd, Round(y) + gm, 1);
end;

phi := phi + 0.01;
End;
 
D

Dock1100

а так:
Код:
While phi <= pi do
Begin
if (cos(phi/2)<>0) then 
begin
x := a*(ln(sin(phi/2)/cos(phi/2))+cos(phi));
y := a * sin(phi);
PutPixel(Round(x) +gd, Round(y) + gm, 1);

x:=-x;
PutPixel(Round(x) +gd, Round(y) + gm, 1);
end;

phi := phi + 0.01;
End;
 
D

Dock1100

Вот должно работать, у меня график нормально рисует.
<!--shcode--><pre><code class='DElphi'>program graf_rezh;

uses crt, graph;

var gd, gm, a: integer;
x, y, phi: real;

BEGIN
clrscr;
gd:= detect;

initgraph(gd, gm,'');

If GrOk <> 0 Then exit;

SetBkColor(0);
gd := GetMaxX div 2; gm := GetMaxY div 2;
phi := 0; a:= 60;
setcolor(8);
if (cos(phi/2)<>0)and(sin(phi/2)<>0) then
begin
x := a*(ln(sin(phi/2)/cos(phi/2))+cos(phi));
y := a * sin(phi);
end;
moveto(Round(x) +gd,- Round(y) + gm);
phi := phi + 0.01;
While phi <= pi do
Begin
if (cos(phi/2)<>0)and(sin(phi/2)<>0) then
begin
x := a*(ln(sin(phi/2)/cos(phi/2))+cos(phi));
y := a * sin(phi);
lineto(Round(x) +gd,- Round(y) + gm);

end;

phi := phi + 0.01;
End;
setcolor(15);
moveto(0,gm);
lineto(639,gm);
moveto(gd,0);
lineto(gd,479);


readkey;
closegraph;
END.[/CODE]
 
Мы в соцсетях:

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