Автор Тема: Построение графика в Тurbo Pascal  (Прочитано 5518 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Мария_1

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Построение графика в Тurbo Pascal
« : 25 Мая 2011, 22:53:22 »
Помогите построить график!!!
Рассчитать значения функции y = (7x^2+1,5x-15)/(x+2) , запросив у пользователя интервал и шаг изменения аргумента функции Xmin, Xmax, Step. Результаты расчета вывести на экран в виде таблицы. Построить график с шагом изменения аргумента функции 0,01.
Расчеты все сделала..а график не могу построить((
с чего начинать?
проблема с точкой разрыва при х=-2....

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Построение графика в Тurbo Pascal
« Ответ #1 : 26 Мая 2011, 20:03:23 »
Проскакивай эту окресность условным оператором.
При составлении таблицы тоже можна попасть в х=-2.
Тоже надо предусмотреть обход.

Оффлайн Мария_1

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Построение графика в Тurbo Pascal
« Ответ #2 : 26 Мая 2011, 20:34:47 »
какими именно?? я просто совсем не могу разобраться, я понимаю, что нужно счетчик...строить линиями... но что именно писать? условия какие?

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Построение графика в Тurbo Pascal
« Ответ #3 : 26 Мая 2011, 20:56:50 »
Насчитала массив y(n).
Проблема в том, что ты сама должна принять решение о печати таблицы.
Например буду давать числа в виде +цц.ддд_, т.е. знак, две цифры целых, две цифры дробных, пробел между числами.
Ширина экрана в твоём расположении РР позиций (я не знаю).
А теперь надо твои n штук размещать строками по ?? в строке -набрана строка, печать, переход на следующую.

Оффлайн Мария_1

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Построение графика в Тurbo Pascal
« Ответ #4 : 26 Мая 2011, 21:09:33 »
таблица и все значения рассчитывается, выводятся на экран. Считает yMAX yMIN. Я не знаю как строить сам график..

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Построение графика в Тurbo Pascal
« Ответ #5 : 27 Мая 2011, 16:18:56 »
Привет!
Пусть имеем экран 1200х680 точек. Посмотри какой у тебя экран в действительности.
Снова надо принимать самостоятельно решение. Имею столько-то рядов точек на экране,
в каждом ряду столько-то точек. Где в системе начало координат? Каким оператором окрашивается точка?
Теперь у тебя х меняется, y меняется.
Xmax-Xmin - столько для Х.  Точек в ряду 680.
Ymax-Ymin - столько для Y.  Рядов точек 1200.
Может оставь немного на поля.
Как на тетради в клеточку считай какие точки закрашивать.
Пусть Xmax=100, Xmin=40, Х=40. Пусть принято в строке поля по 40, осталось для работы 600 пикселей.
Где точка Х=40 на экране === 600/(100-40)*40=400. Надо красить 400 пиксель в строке.
Вам что-нибудь расказывали о работе на экране?
Удачи.

Оффлайн Мария_1

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Построение графика в Тurbo Pascal
« Ответ #6 : 27 Мая 2011, 17:19:34 »
procedure grafik(a,dX,b:real);
var i,gd,gm,p,x0,y0,u,t:integer;
    pt,s:string;
    x,y:array[1..300]of real;
    q,w:array[1..300]of integer;
    msh:real;
    e:char;
Begin
gotoxy(20,3);
writeln('Plotting functions');
gotoxy(20,5);
writeln('y=(7x^2+1.5x-15)/(x+2)');
gd:=detect;
Initgraph(gd,gm,pt);
x0:=getmaxX div 2;
y0:=getmaxY div 2;    {nachalo koord}
outtextXY(x0-20,50,'Y');
outtextXY(getmaxX-100,y0+20,'X');
outtextXY(x0-10,y0+10,'0');
outtextXY(x0-70,17,'Plotting functions');
outtextXY(x0-86,28,'y=(7x^2+1.5x-15)/(x+2)');
line(100,y0,getmaxx-100,y0);
line(x0,50,x0,getmaxy-50);
line(x0,50,x0+15,70);
line(x0,50,x0-15,70);
line(getmaxX-100,y0,getmaxX-120,y0+15);
line(getmaxX-100,y0,getmaxX-120,y0-15);
if abs(ymin)>abs(ymax) then msh:=10*(abs(ymin)/(getmaxy));
if abs(ymin)<abs(ymax) then msh:=10*(abs(ymax)/(getmaxy));
n:=trunc((b-a)/dX);
x[1]:=a;
y[1]:=-(7*x[1]*x[1]+1.5*x[1]-15)/(x[1]+2);
x[n]:=b;
y[n]:=-(7*x[n]*x[n]+1.5*x[n]-15)/(x[n]+2);
q[1]:=round(x[1]*msh);
q[n]:=round(x[n]*msh);
w[1]:=round(y[1]*msh);
line(x0+q[1],y0-w[1],x0+q[2],y0-w[2]);

{for i:=2 to n-1 do begin
   x:=x[i-1]+dX;
    q:=round(x*msh);
 y:=(7*x*x+1.5*x-15)/(x+2);
w:=round(y*msh);
line(x0+q,y0-w,x0+q[i+1],y0-w[i+1]);
end;}



p:=round((getmaxX-200)/(b-a));
u:=round(a);
t:=round(dX);
line(x0+u*p,y0-10,x0+u*p,y0+10);
for i:=1 to trunc((b-a)/dX) do
    line(x0+u*p+t*i,y0-10,x0+u*p+t*i,y0+10);
if abs(ymin)>abs(ymax) then msh:=10*(abs(ymin)/(getmaxy));
if abs(ymin)<abs(ymax) then msh:=10*(abs(ymax)/(getmaxy));
         k:=0;
         x[1]:=a;
         q[1]:=round(x[1]*msh);
         for i:=2 to n-1 do begin
           x:=x[i-1]+dx;
           q:=round(x*msh);
         end;
         x[n]:=b;
         q[n]:=round(x[n]*msh);
         for i:=1 to n do
             begin
                  if (-2.01<x)and(x<-1.99) then  k:=i else
                     y:=-(7*x*x+1.5*x-15)/(x+2);
                     line(x0+q,y0-w,x0+q[i+1],y0-w[i+1]);
                  if k=0 then
                     w:=round(y*msh);
                     line(x0+q,y0-w,x0+q[i+1],y0-w[i+1]);
             end;
         if k=0 then
           for i:=1 to n-1 do
               begin
                    w:=round(y*msh);
                    line(x0+q,y0-w,x0+q[i+1],y0-w[i+1]);
               end;
        {if k=1 then
           for i:=2 to n-1 do
               begin
                    w:=round(y*msh);
                    line(x0+q,y0-w,x0+q[i+1],y0-w[i+1]);
               end;
         }if k>0 then
         begin
           for i:=1 to k-2 do
               begin
                    w:=round(y*msh);
                    line(x0+q,y0-w,x0+q[i+1],y0-w[i+1]);
               end;
           for i:=k+1 to n-1 do
               begin
                    w:=round(y*msh);
                    line(x0+q,y0-w,x0+q[i+1],y0-w[i+1]);
               end;
          end;
         readln;
closegraph;
e:=readkey;
clrscr;
case ord(e) of
     27:exit;
     end;
end;

Оффлайн Мария_1

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Построение графика в Тurbo Pascal
« Ответ #7 : 27 Мая 2011, 17:20:28 »
вот, что я пыталась сделать...
но график строит прямую, а она у меня не прямая., если учитывать десятые и сотые...
о работе рассказывали общее...но график мы никогда не строили..и она не говорила как(((

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Построение графика в Тurbo Pascal
« Ответ #8 : 27 Мая 2011, 20:44:47 »
Привет!
Всё великолепно, на положительных значениях почти прямая.
В области -2, возле разрыва, будет криво.
Но там есть и мнимая составляющая.
Пользуйся, например, сайтом построения графиков и прощупывай сначала графики.
Там первая строка построения полинома. Клацни его на красном справа.
А потом замени на свою функция в той форме, как у тебя записано и кайфуй.
ссылка
Я Вам сочувствую. Но ты стремишся, хвалю.

 

Помогите с посторйкой графика в Visual c++ (win32 console aplication)

Автор superman

Ответов: 0
Просмотров: 7963
Последний ответ 14 Сентября 2009, 19:36:18
от superman
Delphi графика, сделать чтобы окружности пересекались

Автор Агата

Ответов: 0
Просмотров: 2980
Последний ответ 09 Декабря 2011, 00:44:55
от Агата
Графика в Паскале (динамика), осуществить движение

Автор Вивандия

Ответов: 8
Просмотров: 9940
Последний ответ 23 Июня 2010, 22:45:24
от plaklog452
Построение графиков и фазовых портретов в Maple

Автор DeadChild

Ответов: 0
Просмотров: 12004
Последний ответ 26 Января 2012, 21:25:49
от DeadChild
Помогите в составлении программы на Turbo Pascal,плиз!срочно!

Автор Ymni4ka

Ответов: 1
Просмотров: 5979
Последний ответ 03 Ноября 2010, 09:27:22
от testtest