данная тема была открыта сначало в теор. вопросах, однако вышла за пределы того раздела, за что была закрыта (переместиь отказалались по неизвестным мне причинам).
задача построить синусоиду с заданным периодом
неработающая программа
{$N+}
{$E+}
Uses Graph,crt;
const
{ OPTIONS }
shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;
Var grDriver : Integer;
grMode : Integer;
w:real;
x,y:real;{extended;}
i:integer;
Begin
w:=23.6884;
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY); {TP не компилирует из за этих двух строчек}
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY); {***}
x:=lgr;
while x<=pgr do
begin
{ readln(x);}
if x<>2 then begin y:=(sin(2*3/w)*x); {ИМХО, ошибка тут}
{ writeln(y:1:8);}
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg) end;
x:=x+shag;
end;
readkey;
closegraph;
end.
Скобки правильно расставить?
У вас: y := (sin (2*3/w) * x)
Надо: y := sin ((2*3/w) * x)
P.S. А нельзя ли устроить построение графика в том же окне что и Ввод/вывод?
Мне почему-то кажется, что второй вариант более разумен...
OutTextXY в помощь... Как вводить данные (строковые) в графическом режиме - было в FAQ-е...
А что непонятно с выводом?
setcolor(red); { Устанавливаешь требуемый цвет }
outtextxy(10, 10, 'red'); { <--- Выведется строка Red красного цвета }
setcolor(red); { Устанавливаешь требуемый цвет }
outtextxy(10, 10, 'red'); { <--- Выведется строка Red красного цвета }
{$N+}
{$E+}
Uses Graph,crt;
const
{ OPTIONS }
shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;
procedure draw(w: real; color: integer);
var x, y: real;
begin
x:=lgr;
while x<=pgr do begin
y:=sin((2*3/w)*x);
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),color);
x:=x+shag;
end;
end;
Var
grDriver, grMode: smallint; { <-- FPC }
i: integer;
begin
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY);
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY);
draw(23.6884, white);
draw(2 * 23.6884, lightblue);
readkey;
closegraph;
end.