Здраствуйте! Помогите пожалуйсто, кто может подредактировать програму, она написана, но не запускается=( Задание: Вычислить таблицу значений и построить график функций Y(x) на интервале 0<=x<=pi c шагом h=0,15 y=exp(-x/2)/(1-0,5sin3x)
программа:
Код
Program Graphic; Uses crt, graph; const n=40; const P=3.1415926; var a,d,b,x,y,k:real; c,r,f:integer; sx,sy,sz:string; begin ClrScr; write ('Vvedite x, y, shag : '); initGraph(c,r,'c:\tp8\BGI'); setcolor(2); x:=a; f:=20; While b>=x do begin y:=Exp(-x/2)/(1-0.5*sin(3*x)); str(x:0:5,sx); str(y:0:5,sx); outtextxy(0,f,'X='+sx+' Y='+sy); f:=f+10; x:=x+d; end; setcolor(white); line(0,240,640,240); line(640,240,625,237); line(640,240,625,243); line(320,0,320,480); line(320,0,317,15); line(320,0,323,15); outtextxy(310,4,'Y'); outtextxy(631,220,'X'); outtextxy(325,243,'0'); settextstyle(2,0,2); x:=320; k:=0.2; while x<640-n*0.3 do begin x:=x+n*0.2; line(round(x),235,round(x),245); str(k:2:1,sz); outtextxy(round(x), 245,sz); k:=k+0.2; end; x:=a; x:=320; k:=-0.2; while x>n*0.3 do begin x:=x-n*0.2; line(round(x),235,round(x),245); str(k:2:1,sz); outtextxy(round(x)-5,245,sz); k:=k-0.2; end, y:=240; k:=0.2; while y>n*0.3 do begin y:=y-n*0.2; line(325,round(y),315,round(y)); str(k:2:1,sz); outtextxy(330,round(y),sz); k:=k+0.2; end; y:=240; k:=-0.2; while y<480-n*0.3 do begin y:=y+n*0.2; line(325,round(y),315,round(y)); str(k:2:1,sz); outtextxy(325,round(y),sz); k:=k-0.2; end; settextstyle(2,0,6); setcolor(4); outtextxy(340,100,'y:=Exp((-(x)/2)/(1-0.5*sin(3*x)'); outtextxy(450,135,'0<=x<=P); x:=a; y:=Exp(-x/2)/(1-0.5*sin(3*x)); moveto(322+round(x*1.1*n),240+round(y*1.1*n)); while b>=x do begin y:=Exp(-x/2)/(1-0.5*sin(3*x)); lineto(322+round(x*n),240+round(y*1.1*n)); x:=x+d; delay(1000); end; readkey; closegraph; end.
Заранее пасибо=)
Добавлено через 12 мин. Решение подобного задания Вычислить y=exp(1/3*ln(x+4)/exp(x), (где x в степени е) напечатать таблицу значений и построить график функции на интервале -4,4<=X<=4 c шагом ΔX=0,4 Программа:
Код
program grafik; uses crt,graph; var x,y,xn,xk,h:real; GD,GM,X0,Y0,dX,dY,ch:integer; s1,s2:string; Begin write(' Введите xn,xk,h: '); read(xn,xk,h); DetectGraph(GD,GM); InitGraph(GD,GM,'\bgi'); SetColor(15); SetBkColor(3); { Вывод таблицы значений } OutTextXY(10,10,' X Y'); x:=xn; dy:=20; while x<xk+0.01 do begin if x<-4.01 then y:=-exp(1/3*ln(abs(x+4)))/exp(x) else if x>-3.99 then y:=exp(ln(x+4)*1/3)/exp(x) else y:=0; str(x:4:1,s1); str(y:7:3,s2); OutTextXY(10,dy,s1); OutTextXY(50,dy,s2); dy:=dy+10; x:=x+h end; readkey;
{ Координатная плоскость } OutTextXY(350,100,'y=exp(ln(x+4)*1/3)/exp(x)'); outtextxy(350,120,'-4.4<=x<=4.0,h=0.4 '); settextstyle(2,0,2); X0:=GetMaxX div 2; Y0:=GetMaxY div 2; Line(0,Y0,GetMaxX,Y0); Line(X0,0,X0,GetMaxY); dx:=6;ch:=1; while x0+dx<getmaxX-10 do begin Line(x0+dx,Y0-1,x0+dx,Y0+1); Line(x0-dx,y0-1,x0-dx,y0+1); str(ch,s1);str(-ch,s2); OuttextXY(x0+dx-2,y0+5,s1); OuttextXY(x0-dx-6,y0+5,s2); ch:=ch+2; dX:=dX+12 end; dy:=6;ch:=1; while y0+dy<getmaxy-10 do begin Line(x0-1,y0+dy,x0+1,y0+dy); Line(x0-1,y0-dy,x0+1,y0-dy); str(ch:2,s1);str(-ch:3,s2); OuttextXY(x0-13,y0+dy-3,s2); OuttextXY(x0-10,y0-dy-3,s1); ch:=ch+2; dy:=dy+12 end; Line(X0,0,X0-3,5); Line(X0,0,X0+3,5); Line(GetMaxX,Y0,GetMaxX-5,Y0+3); Line(GetMaxX,Y0,GetMaxX-5,Y0-3);
{ График } SetColor(6); x:=xn; moveto(x0+round(xn*6),y0-round(-exp(1/3*ln(abs(xn+4)))/exp(xn)*6)); while x<=xk do begin if x<-4.0 then y:=-exp(1/3*ln(abs(x+4)))/exp(x) else if x>-4.0 then y:=exp(ln(x+4)*1/3)/exp(x) else y:=0; lineto(X0+round(x*6),Y0-round(y*6)); x:=x+0.001;delay(50) end; readkey; CloseGraph End.
Эскизы прикрепленных изображений
Автор: volvo 16.12.2007 3:26
Ошибки - то все синтаксические... Исправляешь - программа работает...
А где они - это компилятор должен показать...
Автор: Гость 16.12.2007 4:17
А он пишет вот в этой строчке ошибка, что тут неправильно?
Код
Program Graphic; Uses crt, graph; const n=40; const P=3.1415926; var a,d,b,x,y,k:real; c,r,f:integer; sx,sy,sz:string; begin ClrScr; write ('Vvedite x, y, shag : '); initGraph(c,r,'c:\tp8\BGI'); setcolor(2); x:=a; f:=20; While b>=x do begin y:=Exp(-x/2)*(1-0.5*sin(3*x)); str(x:0:5,sx); str(y:0:5,sx); outtextxy(0,f,'X='+sx+' Y='+sy); f:=f+10; x:=x+d; end; setcolor(white); line(0,240,640,240); line(640,240,625,237); line(640,240,625,243); line(320,0,320,480); line(320,0,317,15); line(320,0,323,15); outtextxy(310,4,'Y'); outtextxy(631,220,'X'); outtextxy(325,243,'0'); settextstyle(2,0,2); x:=320; k:=0.2; while x<640-n*0.3 do begin x:=x+n*0.2; line(round(x),235,round(x),245); str(k:2:1,sz); outtextxy(round(x), 245,sz); k:=k+0.2; end; x:=a; x:=320; k:=-0.2; while x>n*0.3 do begin x:=x-n*0.2; line(round(x),235,round(x),245); str(k:2:1,sz); [size=6] outtextxy(round(x)-5.245,sz); [/size] k:=k-0.2; end, y:=240; k:=0.2; while y>n*0.3 do begin y:=y-n*0.2; line(325,round(y),315,round(y)); str(k:2:1,sz); outtextxy(330,round(y),sz); k:=k+0.2; end; y:=240; k:=-0.2; while y<480-n*0.3 do begin y:=y+n*0.2; line(325,round(y),315,round(y)); str(k:2:1,sz); outtextxy(325,round(y),sz); k:=k-0.2; end; settextstyle(2,0,6); setcolor(4); outtextxy(340,100,'y:=Exp((-(x)/2)*(1-0.5*sin(3*x)'); outtextxy(450,135,'0<=x<=P); x:=a; y:=Exp((-(x)/2)*(1-0.5*sin(3*x)); moveto(322+round(x*1.1*n),240+round(y*1.1*n)); while b>=x do begin y:=Exp((-(x)/2)*(1-0.5*sin(3*x)); lineto(322+round(x*n),240+round(y*1.1*n)); x:=x+d; delay(1000); end; readkey; closegraph; end.
Автор: Гость 16.12.2007 4:18
А он пишет вот в этой строчке ошибка, что тут неправильно?
Код
outtextxy(round(x)-5.245,sz);
Автор: andriano 16.12.2007 4:20
Процедура требует 3 параметра, а у тебя только 2. Причем, первый - вещественный.
Автор: TP7.0 16.12.2007 4:21
Цитата(Гость @ 16.12.2007 0:18)
А он пишет вот в этой строчке ошибка, что тут неправильно?
Код
outtextxy(round(x)-5.245,sz);
пишет: type mismath
Автор: volvo 16.12.2007 4:31
outtextxy(round(x)-5, 245, sz);
Добавлено через 1 мин. Кстати,
y:=Exp(-x/2)*(1-0.5*sin(3*x));
ты умножение с делением не перепутал случайно? У тебя в условии именно деление
Автор: TP7.0 16.12.2007 4:40
Цитата(volvo @ 16.12.2007 0:31)
outtextxy(round(x)-5, 245, sz);
Добавлено через 1 мин. Кстати,
y:=Exp(-x/2)*(1-0.5*sin(3*x));
ты умножение с делением не перепутал случайно? У тебя в условии именно деление
Уряяяя=) заработало=) Пасибо огромное за помощь=))
Добавлено через 3 мин.
Хм.. Ток странно работает=(
выскакивает ошибка, выделеляет эту строку...
Код
f:=f+10;
Автор: volvo 16.12.2007 4:48
А ты бы после строки:
write ('Vvedite x, y, shag : ');
добавил еще
Readln(a, b, d);
и при запуске ввел, скажем, 1, 3 и 0.01 - тогда, глядишь, и вылетать не будет...
Автор: TP7.0 16.12.2007 4:52
Цитата(volvo @ 16.12.2007 0:48)
А ты бы после строки:
write ('Vvedite x, y, shag : ');
добавил еще
Readln(a, b, d);
и при запуске ввел, скажем, 1, 3 и 0.01 - тогда, глядишь, и вылетать не будет...
Пасибо огромное=))) работает, осталось доредактиравать, уж завтра доделаю, спать пошёл. Ещё раз огромное спасибо volvo=)))))
Автор: TP7.0 16.12.2007 16:38
Маленький вопросик, а как записывается на языке паскаль y=3x (где х степень 3). как формула в паскале будет? Пример:
Эскизы прикрепленных изображений
Автор: Client 16.12.2007 16:42
Цитата
а как записывается на языке паскаль
Т.е. тебе написать само выражение? Если так, то надо сделать цикл, где будешь умножать на 3 и все
Автор: TP7.0 16.12.2007 16:44
Цитата(Client @ 16.12.2007 12:42)
Т.е. тебе написать само выражение?
формулу, как в паскале будет... я блоксхему состовляю и в ней один момент, подзабыл как записать ф-ю y=3x( где x в степени)