1 / 1 / 1
Регистрация: 18.10.2017
Сообщений: 75
1
GraphABC

График функции

25.11.2017, 11:49. Показов 1224. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Выводит оси координат y=x+2 зеленым золотым цветом
как написать код в графабс?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2017, 11:49
Ответы с готовыми решениями:

Составить график функции. Дана функция нужно построить график по полученным точкам
Помогите составить график функции. Дана функция нужно построить график по полученным точкам...

Для функции y=f(x) получить таблицу значений и график этой функции на отрезке
Для функции y=f(x) получить таблицу значений и график этой функции на отрезке. Количество точек на...

Написать блок-схему и программу вычисления функции на заданном промежутке с шагом 0.2 и построить график этой функции
Написать блок-схему и программу вычисления функции на заданном промежутке с шагом 0.2 и построить...

График функции и ошибка "Неверное число параметров функции"
Program aaa; Uses GraphABC; Var x,y:integer; Begin For x:=0 to 360 do Begin Y:=Round(...

4
Эксперт Pascal/Delphi
6809 / 4566 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
25.11.2017, 12:31 2
Взято отсюда:
Построить график функции нарисовать и разместить оси координат

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
uses graphABC;
function F(x: real): real;
begin
  F := x + 2;
end;
 
var
  xn, xk, x, mx, my, dx: real;
  x0, y0, i, nx, nmn, nmx: integer;
 
begin
  //интервал
  xn := -5;
  xk := 5;
  //графическое окно
  setwindowsize(600, 600);
  centerwindow;
  setpencolor(clGold);
  //начало координат
  x0 := windowwidth div 2;
  y0 := round(windowheight * F(xk) / (F(xk) - F(xn)));
  //масштабы
  mx := (x0 - 30) / xk;{масштаб по Х}
  my := (y0 - 20) / F(xk);{по У}
  //координатная сетка
  for i := 1 to trunc(F(xk)) + 1 do
  begin
    line(x0 + round(i * mx), y0 - 3, x0 + round(i * mx), y0 + 3);
    line(x0 - round(i * mx), y0 - 3, x0 - round(i * mx), y0 + 3);
    line(x0 - 3, y0 - round(i * my), x0 + 3, y0 - round(i * my));
    line(x0 - 3, y0 + round(i * my), x0 + 3, y0 + round(i * my));
    textout(x0 + round(i * mx), y0 + 10, inttostr(i));
    textout(x0 - round(i * mx), y0 + 10, inttostr(-i));
    if i mod 2 = 0 then
    begin
      textout(x0 - 20, y0 - round(i * my), inttostr(i));
      textout(x0 - 25, y0 + round(i * my), inttostr(-i));
    end;
  end;
  line(0, y0, windowwidth, y0);{оси}
  line(windowwidth, y0, windowwidth - 10, y0 + 5);
  line(windowwidth, y0, windowwidth - 10, y0 - 5);
  line(x0, 0, X0, windowheight);
  line(x0, 0, x0 - 5, 10);
  line(x0, 0, x0 + 5, 10);
  textout(x0 + 5, y0 + 10, '0');
  textout(windowwidth - 10, y0 - 20, 'X');
  textout(x0 + 10, 0, 'Y');
  //график
  x := xn;
  setpencolor(clBlue);
  setpenwidth(2);
  dx := 0.1;
  while x <= xk do
  begin
    if x = xn then moveto(x0 + round(x * mx), y0 - round(F(x) * my))
    else lineto(x0 + round(x * mx), y0 - round(F(x) * my));
    x := x + dx;
  end;
  setfontsize(10);
  setfontcolor(clBlue);
  textout(20, 0, 'График функции y=x+2');
end.
Добавлено через 17 секунд
Цитата Сообщение от baaaeeyh Посмотреть сообщение
зеленым золотым цветом
Выбрал золотой
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.11.2017, 12:37 3
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

зеленый золотой цвет выберите в справке - цветовые константы, я такой не знаю.
А в принципе так.
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
var m,x:real;
    a,b,c,i:integer;
begin
//размеры и положение окна
setwindowsize(500,500);
centerwindow;
setwindowcaption('График y=x+2');
//интервал
a:=-4;
b:=4;
//начало координат
c:=windowwidth div 2;
//масштаб
m:=(c-20)/4;
//оси
setpencolor(clLime);
line(0,c,2*c,c);
textout(2*c-20,c-20,'X');
line(c,0,c,2*c);
textout(c+5,0,'Y');
textout(c+5,c+10,'0');
//засечки и подписи по осям
for i:=1 to 8 do
 begin
  line(c+round(i*m/2),c-3,c+round(i*m/2),c+3);
  line(c-round(i*m/2),c-3,c-round(i*m/2),c+3);
  textout(c+round(i*m/2)-5,c+10,floattostr(i/2));
  textout(c-round(i*m/2)-5,c+10,floattostr(-i/2));
  line(c-5,c-round(i*m/2),c+5,c-round(i*m/2));
  line(c-5,c+round(i*m/2),c+5,c+round(i*m/2));
  textout(c-25,c-round(i*m/2)-5,floattostr(i/2));
  textout(c-25,c+round(i*m/2)-5,floattostr(-i/2));
 end;
 //график - прямая линия
setpencolor(clBlue);
x:=a;
moveto(c+round(x*m),c-round(f(x)*m));
while x<=b do
 begin
  lineto(c+round(x*m),c-round(f(x)*m));
  x:=x+0.1;
 end;
end.
1
1 / 1 / 1
Регистрация: 18.10.2017
Сообщений: 75
25.11.2017, 14:29  [ТС] 4
Спасибо. Разобрал. Но как это можно так вычислить расположение координат штрихов в системе координат. Просто предположить что они где-то там должны быть?
И второй момент. Через Мовту указали расположение пера. Он равен - ширина -72??(то есть оно за графическим окном?)

Есть похожая задача. -Выводит черными точками график функции y=f(x)=kx+10k, k=7

Какой смысл вкладывает задача? Эта задача идентична задаче выше, только оси координат рисуются через пут/пет пиксель точками?
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.11.2017, 14:37 5
Цитата Сообщение от baaaeeyh Посмотреть сообщение
Но как это можно так вычислить расположение координат штрихов в системе координат.
Да от начала координат используя масштаб.
Pascal
1
2
3
4
5
6
7
8
9
10
//масштаб
m:=(c-20)/4;//половину ширины экрана делим на 4(или всю ширину делить на 8=b-a)
..................
/засечки и подписи по осям
for i:=1 to 8 do//с запасом, поскольку график на 1 приподнят
 begin
  line(c+round(i*m/2),c-3,c+round(i*m/2),c+3);
  line(c-round(i*m/2),c-3,c-round(i*m/2),c+3);
  textout(c+round(i*m/2)-5,c+10,floattostr(i/2));
  textout(c-round(i*m/2)-5,c+10,floattostr(-i/2))
Добавлено через 2 минуты
Цитата Сообщение от baaaeeyh Посмотреть сообщение
Выводит черными точками график функции
График рисуем не линией как здесь
Pascal
1
2
3
4
5
6
7
8
setpencolor(clBlue);
x:=a;
moveto(c+round(x*m),c-round(f(x)*m));
while x<=b do
 begin
  lineto(c+round(x*m),c-round(f(x)*m));
  x:=x+0.1;
 end;
а так
Pascal
1
2
3
4
5
6
7
setbrushcolor(clBlack);
x:=a;
while x<=b do
 begin
  circle(c+round(x*m),c-round(f(x)*m),2);
  x:=x+0.1;
 end;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2017, 14:37
Помогаю со студенческими работами здесь

График функции
Написать программу построения графика функции y=1/x для x\epsilon

График функции
PascalABC Цель работы - изобразить функцию Крест &quot;Cruciform&quot; P=2a/sin(2φ). Для этого выбрать...

График функции
Что исправить нужно graphABC; //Подключаем графический модуль const W = 1200; H =...

Нарисовать график функции
Необходимо написать программу, чтобы рисовала косинус в паскале (также необходимы координатные оси,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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