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

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

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

    Скидки до 10%

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

Помогите с решением задачи на языке паскаль

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Помогите с решением задачи на языке паскаль. Есть решение но по результатам выводит один корень, а нужэно что бы выводил все, что делать не знаю!!! Вот условие: Вычислние корня уровнения и построения графика функциии уровнения
tgx-0.5x+1=0. Вот мое решение:


Код:
uses graph;
var sx,sy,gd,gm,d:integer;x1,y1,c,x0,y0,x,y,Aa,Bb:real;
function f3(x:real):real;
begin f3:=(sin(x)/cos(x))-0.5*x+1;end;
procedure korni;
var a,b,c,e,s:real;
begin
Write('vvedite nizchnii granicu A= ');ReadLn(A);
Write('vvedite vverexnii granicu B= ');ReadLn(B);
repeat
Write('vvedite tochnost E= ');ReadLn(E);
until (e>0)and(e<1); aa:=a;bb:=b;
if abs(a)>abs(B) then d:=2*abs(trunc(a))+1 else
d:=2*abs(trunc(B))+1;
repeat c:=(a+B)/2;
if f3(a)*f3©<=0 then b:=c else a:=c;
until (b-a)<e;
writeln('koren=',(a+B)/2:5:5);readln
end;

{для построения графика}

begin

korni;
d:=trunc(480/d);


gd:=detect;
initgraph(gd,gm,'c:\work\1');
cleardevice;
sx:=getmaxx div 2;{koordinat seredini}
sy:=getmaxy div 2;{akran displei }

{osi koordinat}
setbkcolor(0);
setcolor(2);
line(0,sy,getmaxx,sy);
line(sx,0,sx,getmaxy);

{strelki na osi}
setcolor(14);
moveto(sx-5,5);
lineto(sx,0);
lineto(sx+5,5);
moveto(getmaxx-5,sy-5);
lineto(getmaxx,sy);
lineto(getmaxx-5,sy+5);

{nadpisi na osi X i Y}
settextstyle(0,0,2);
outtextxy(sx-22,2,'Y');
outtextxy(getmaxx-16,sy-22,'X');


{rametka osi OX}
setcolor(1);
x0:=d;
while x0<sx do
begin
line(trunc(sx-x0),sy-2,trunc(sx-x0),sy+2);
line(trunc(sx+x0),sy-2,trunc(sx+x0),sy+2);
x0:=x0+d;

end;

{rametka osi OY}
y0:=d;
while y0<sy do
begin
line(sx-2,trunc(sy-y0),sx+2,trunc(sy-y0));
line(sx-2,trunc(sy+y0),sx+2,trunc(sy+y0));
y0:=y0+d
end;

{postroenie grafika funkcii y=f(x)}
setcolor(15);

x:=aa;x1:=x;y1:=f3(x1);
while x<=bb do
begin
y:=f3(x);
{		line(trunc(x1*d)+sx,sy-trunc(y1*d),trunc(x*d)+sx,sy-trunc(y*d));}
putpixel(trunc(x*d)+sx,sy-trunc(y*d),5);
y1:=y;x1:=x;
x:=x+1e-2{1/d};
end;
readln;
closegraph
end.
 
D

Dock1100

Код:
 while x<=bb do
begin
y:=f3(x);
{		line(trunc(x1*d)+sx,sy-trunc(y1*d),trunc(x*d)+sx,sy-trunc(y*d));}
putpixel(trunc(x*d)+sx,sy-trunc(y*d),5);
y1:=y;x1:=x;
x:=x+1e-2{1/d};
end;
bb - что это?


так не проще?
Код:
 while x<=bb do
begin
if (sin(x)/cos(x)-0.5*x+1)=0 then
putpixel(sin(x)/cos(x)-0.5*x+1,0,5);
end;
 
H

hosm

Dock1100 if забавный :rolleyes:
вещественные числа на точное равенство в выч. математике не сравнивают, обычно используют проверку на заданную точность.
 
D

Dock1100

вещественные числа на точное равенство в выч. математике не сравнивают, обычно используют проверку на заданную точность.
Точность у него вроде с клавы вводится.

Dock1100 if забавный :rolleyes:
Так у него "у" в функции нету, ну я и взял то что справа.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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