IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> График функций, ВЫчисление таблицы значений и построение графика
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Саша

Репутация: -  0  +


Здраствуйте! Помогите пожалуйсто, кто может подредактировать програму, она написана, но не запускается=(
Задание: Вычислить таблицу значений и построить график функций 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);

     OutTextXY(GetMaxX-5,Y0+5,'X');
     OutTextXY(X0-10,5,'Y');

     { График }
     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.


Сообщение отредактировано: TP7.0 -


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ошибки - то все синтаксические... Исправляешь - программа работает...

А где они - это компилятор должен показать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






А он пишет вот в этой строчке ошибка, что тут неправильно?
Код

  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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






А он пишет вот в этой строчке ошибка, что тут неправильно?
Код


outtextxy(round(x)-5.245,sz);
    

 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Процедура требует 3 параметра, а у тебя только 2. Причем, первый - вещественный.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Саша

Репутация: -  0  +


Цитата(Гость @ 16.12.2007 0:18) *

А он пишет вот в этой строчке ошибка, что тут неправильно?
Код


outtextxy(round(x)-5.245,sz);
    


пишет: type mismath

Сообщение отредактировано: TP7.0 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






outtextxy(round(x)-5, 245, sz);


Добавлено через 1 мин.
Кстати,
y:=Exp(-x/2)*(1-0.5*sin(3*x));
ты умножение с делением не перепутал случайно? У тебя в условии именно деление
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Саша

Репутация: -  0  +


Цитата(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;


Сообщение отредактировано: TP7.0 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






А ты бы после строки:

write ('Vvedite x, y, shag : ');

добавил еще
Readln(a, b, d);


и при запуске ввел, скажем, 1, 3 и 0.01 - тогда, глядишь, и вылетать не будет...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Саша

Репутация: -  0  +


Цитата(volvo @ 16.12.2007 0:48) *

А ты бы после строки:

write ('Vvedite x, y, shag : ');

добавил еще
Readln(a, b, d);


и при запуске ввел, скажем, 1, 3 и 0.01 - тогда, глядишь, и вылетать не будет...

Пасибо огромное=))) работает, осталось доредактиравать, уж завтра доделаю, спать пошёл.
Ещё раз огромное спасибо volvo=)))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Саша

Репутация: -  0  +


Маленький вопросик, а как записывается на языке паскаль y=3x (где х степень 3). как формула в паскале будет?
Пример:

Сообщение отредактировано: TP7.0 -


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
а как записывается на языке паскаль
Т.е. тебе написать само выражение? Если так, то надо сделать цикл, где будешь умножать на 3 и все

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Саша

Репутация: -  0  +


Цитата(Client @ 16.12.2007 12:42) *

Т.е. тебе написать само выражение?

формулу, как в паскале будет... я блоксхему состовляю и в ней один момент, подзабыл как записать ф-ю y=3x( где x в степени)

Сообщение отредактировано: TP7.0 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Y := Exp(X*Ln(3)); { Это и есть 3^X }
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Саша

Репутация: -  0  +


Цитата(volvo @ 16.12.2007 12:52) *

Y := Exp(X*Ln(3)); { Это и есть 3^X }


Пасибо volvo=)))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 0:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name