Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 15
1

Соединение точек на графике

17.05.2009, 11:44. Показов 3083. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите соединить точки на графике экспотенциальной/логарифмической функцией в этой программе
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
program lr12;
Uses crt,graph; Const shag=0.01;
type mas=array[1..100] of integer;
     massiv=array[1..100] of real;
var a,b,h,x,integral,imax,imin,ymax,ymin :real;
     n,i,j,z:integer;
     xx:mas;y:massiv;
Procedure vvod;
  var j:integer;
 begin
  write('vvedite predel integrirovaniya  a='); readln(a);
  write('vvedite predel integrirovaniyaя b='); readln(b);
  write('vvedite kolichestvo razbieniy z='); readln(z);
   for j:=1 to z do
    begin
     write('vvedite znacheniye razbieniya (chetnoye znacheniye) n',j,'='); readln(xx[j]);
      if (xx[j] mod 2)>0 then
       begin
        xx[j]:=xx[j]+1;
        writeln('Chislo n',j,' bylo vvedeno nechotnoye, ono budet zameneno na n',j,'=',xx[j]);
       end;
    end;
 end;
Function F(x:Real):Real;
 begin
  F:=1/(1+x*x);
 end;
Procedure Maxmin(Var imax,imin,ymax,ymin:real;var xx:mas;var y:massiv; ii:integer);
  Var i:integer;
      k:real;
 Begin
  imin:=xx[1]; imax:=xx[1]; 
  For i:=1 to ii do
     Begin
       If imin>xx[i] then imin:=xx[i];
       If imax<xx[i] then imax:=xx[i];
     End;
  i:=1;
  ymax:=y[i];ymin:=y[i];
  For i:=1 to ii do
   begin
    if ymax<y[i] then ymax:=y[i];
    if ymin>y[i] then ymin:=y[i];
   end;
 End;
Procedure Masshtab(Var mx,my:real; Var a1,a2:integer; ymax,ymin,imin,imax:real);
 Begin
  If ymax*ymin>=0 then
                    Begin
                     If ymin>=0 then
                                 Begin
                                   my:=round((getmaxy-10)/(ymax));
                                   a2:=Round(my*ymax)+5;
                                 End
                               else
                                 Begin
                                   my:=-1*(getmaxy-10)/ymin;
                                   a2:=Round(my*ymax)+5;
                                 End;
                    End
                  else
                    Begin
                      my:=(getmaxy-10)/(ymax-ymin);
                      a2:=Round(my*ymax+5);
                    End;
                      mx:=getmaxx/(imax-imin);
                      a1:=Round(mx*(-1)*imin);
End;
 Procedure Postr(var a,b:real;ymax,ymin:real; Var xx:mas;var y:massiv);
  Var mx,my,k:real;
      s:string;
      ErrCode,GrDriver,GrMode,a1,a2,i:integer;
 Begin
  GrDriver:=Detect; InitGraph(GrDriver,GrMode,'..\bgi');
  ErrCode:=GraphResult;
  If Errcode<>GrOk then Writeln('Graphic error !!!')
                   else
                     Begin
                       Masshtab(mx,my,a1,a2,ymax,ymin,imin,imax);
                       Line(0,getmaxy-10,getmaxx,getmaxy-10);
                       str(a:3:0,s);
                       Outtextxy(15,getmaxy-20,s);
                       str(b:3:0,s);
                       Outtextxy(getmaxx-50,getmaxy-20,s);
                       Line(10,0,10,getmaxy);
                       str(ymax:5:2,s);
                       Outtextxy(15,20,s);
                       str(ymin:5:2,s);
                       Outtextxy(15,getmaxy-40,s);
                       k:=a;
                        For i:=1 to z do
                         Begin
                            SetColor(14);
                            Circle(Round(xx[i]*mx+a1),round(a2-y[i]*my),3);
                         End;
                       SetColor(15);
                       OutTextxy(15,5,'L(x)');
                       OutTextxy(631,getmaxy-20,'X');                       
 
                     End;
End;
BEGIN
vvod;
for j:=1 to z do
  begin
    h:=(b-a)/xx[j];
    integral:=F(a)+F(b)+4*F(a+h);
      for i:=1 to (xx[j] div 2)-1 do
        begin
          x:=a+2*h*i;
          integral:=integral+2*F(x)+4*F(x+h);
        end;
      integral:=h*integral/3;
      writeln('integral = ',integral);
      y[j]:=integral;
  end;
Maxmin(imax,imin,ymax,ymin,xx,y,z);
Postr(imin,imax,ymax,ymin,xx,y); 
ReadKey;CloseGraph;
end.
или приведите пример, как надо соединять точки экспотенциальной/логарифмической функцией
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2009, 11:44
Ответы с готовыми решениями:

Выражение зависящие от точек на графике
1. Для задания записать выражение, зависящее от координат точки X1 и Y1 и принимающее значение...

Вычислить количество точек на графике функции
Условие на первом скриншоте. Функция y=cos(x). Задача решается в два этапа: табулирование...

Вычислить количество точек на графике функции (операторы while и repeat)
Вычислить число точек на графике функции,попадающих в прямоугольник , ограниченный линиями x=-a,...

Составить программу, вычисляющую количество точек на графике функции
Составить программу, вычисляющую количество точек на графике функции, лежащих левее прямой,...

9
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.05.2009, 13:27 2
Помогите соединить точки на графике экспотенциальной/логарифмической функцией в этой программе
Приведите пример возможных исходных данных и что Вы хотите увидеть на экране,очень трудно влезать в прогу, когда не знаешь суть.
А соедигить точки можно или линиями Line(), или одной линией в цикле
Moveto(координаты начальной точки)
for i:=1 to ? do
Line();
А если нужно нарисовать просто линию графика, то проще использовать в том же цикле PutPixel();
0
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 15
17.05.2009, 14:26  [ТС] 3
Мне надо соединить плавной линией.
если ввести
a=1
b=25
z=4
n1=2
n2=4
n3=6
n4=8
то появятся точки, которые нужно соединить
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.05.2009, 14:31 4
Мне надо соединить плавной линией.
Это просто так не сделаете. Что бы соединяющая линия была плавной, надо задать уравнение для ее построения.
0
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 15
17.05.2009, 15:12  [ТС] 5
А как это можно реализовать?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.05.2009, 16:16 6
Вот так можно соединить точки линиями. Чем больше точек,тем плавнее линия.
Иначе надо просто рисовать сам график, а на нем точки.
Измените этот фрагмент в основной программе.
Pascal
1
2
3
4
5
6
7
8
9
10
11
 k:=a;
    Moveto(round(xx[1]*mx+a1),round(a2-y[1]*my));
    SetColor(14);
    Circle(Round(xx[1]*mx+a1),round(a2-y[1]*my),3);
    For i:=2 to z do
      Begin
        SetColor(14);
        Circle(Round(xx[i]*mx+a1),round(a2-y[i]*my),3);
        Setcolor(12);
        LineTo(Round(xx[i-1]*mx+a1),round(a2-y[i-1]*my));
      End;
Добавлено через 1 час 3 минуты 56 секунд
Этот фрагмент не из основной программы,а из процедуры Postr
1
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 15
17.05.2009, 16:27  [ТС] 7
спасибо, но мне не то надо было
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.05.2009, 16:30 8
Значит надо график рисовать.
0
0 / 0 / 0
Регистрация: 23.03.2009
Сообщений: 15
17.05.2009, 19:48  [ТС] 9
как???
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.05.2009, 20:01 10
Вообще-то строить график не очень сложно,но у Вас так наворочена не по делу программа,что нет никакого желания разбираться. Как строить графики почитайте здесь,и примеры кодов есть.
https://www.cyberforum.ru/atta... 1241779566
1
17.05.2009, 20:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2009, 20:01
Помогаю со студенческими работами здесь

Подпись точек на графике
Добрый вечер! В вобщем такая вот проблема,Error, (in plots:-display) expecting plot structures but...

Изменение точек на графике
Здравствуйте. Подскажите, если я с помощью plot вывел на экран 2 точки, могу я как-то потом...

Отображение точек на графике
Собственно такой вопрос. Нужно на графике указать 15 точек (по точкам сверху соответственно). В...

Построение точек на графике
Проводиться серия опытов из которых мы получаем точки X и Y. Точек может быть разное каличество,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru