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

Модули graph и crt. Построение графика.

02.03.2011, 21:00. Показов 2988. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Построить график функции:
Название: ррр5ывjpg.jpg
Просмотров: 196

Размер: 7.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
        uses graph,crt;
var gd,gm,gr,i,kn:integer;
x,dx,y,n:real;
a:array[1..100] of integer;
 begin
clrscr;
writeln('vv.x,dx,kn,n');
readln(x,dx,kn,n);
for i:=1 to kn do
Begin
y:=sqr(sin(2x - n/2));
a[i]:=round(y*20)+20;
writeln(x:4:1,'  ',a[i]:4);
x:=x+dx;
end;
readln;
gd:=detect;
initgraph(gd,gm,'');
if gr<>grok then halt(1);
readln;
outtextxy(150,100,'sqr(x)-B/x');
line(20,262,150,262);
line(20,20,20,700);
outtextxy(150,260,'>');
outtextxy(150,270,'');
outtextxy(130,270,'11');
outtextxy(0,20,'y');
outtextxy(0,262,'0');
outtextxy(17,20,'^');
outtextxy(35,20,'2342 ');
outtextxy(0,550,'-5');
for i:=2 to kn do
line((i-1)*10+10,300-a[i-1],i*10+10,300-a[i]);
readln;
end.
Но, увы не работает. Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2011, 21:00
Ответы с готовыми решениями:

Совместимость Crt и Graph
Есть программа в ней меню, с которого идет переход в процедуры и назад в меню, со всеми процедурами которые используют только...

Модуль Graph, Crt
Пожалуйста напишите текст программы на движущийся квадрат вниз а потом наверх,цвет не важен)за ранее спасибо

CRT совместно с Graph
Всем добрый вечер! Столкнулся с такой проблемой: работую с модулем Graph, вывожу гистограммы. Хочу создать графическое меню выбора при...

3
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
02.03.2011, 21:31
Можно так.
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
uses graph;
const xn=-2*pi;
      xk=2*pi;
var mx,my,x,dx,y:real;
    grD,grM,x0,y0,i,px,py:integer;
    s:string;
begin
grD:=detect;{инициализация графического режима}
initgraph(grD,grM,'');
X0:=getmaxX div 2;{начало координат в центре экрана}
Y0:=getmaxY-80;
{коэффициенты по осям для перевода реальных координат в экранные}
mx:=(getmaxX-60)/(xk-xn);
my:=200;
line(0,y0,getmaxX,y0); {ось Х}
line(x0,getmaxy,x0,0); {ось У}
{подписи оси Y}
line(x0-3,y0-round(sin(pi/2)*my),x0+3,y0-round(sin(pi/2)*my));
outtextXY(x0-10,y0-round(sin(pi/2)*my),'1');
line(x0-3,y0+round(sin(pi/2)*my),x0+3,y0+round(sin(pi/2)*my));
outtextXY(x0-15,y0+round(sin(pi/2)*my),'-1');
{подриси оси Х}
for i:=1 to 6 do   {максимальное количество засечек в одну сторону}
 begin
  line(x0+round(i*pi*mx/2),y0-3,x0+round(i*pi*mx/2),y0+3); {засечки на оси Х}
  line(x0-round(i*pi*mx/2),y0-3,x0-round(i*pi*mx/2),y0+3);
  if i mod 2=0 then {подписи через 1}
   begin
    str(i div 2,s);
    if s='1' then s:='';{1pi 1 не пишем}
    outtextXY(x0+round(i*pi*mx/2),y0+10,s+'pi');
    outtextXY(x0-round(i*pi*mx/2),y0+10,'-'+s+'pi');
   end;
  end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0-10,10, 'Y');
dx:=0.001;
{график}
x:=xn;
while x<=xk do
 begin
  px:=x0+round(x*mx); {изменение по оси Х}
  y:=sqr(sin(2*x-pi/2)); {график в реальных координатах}
  py:=y0-round(y*my);{в экранных}
  putpixel(px,py,12);{график красным}
  x:=x+dx; {наращиваем х}
 end;
readln
end.
Добавлено через 3 минуты
Я только не очень формулу понял, там только аргумент в квадрате, или синус в квадрате... Нарисовал синус в квадрате.

Добавлено через 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
uses graph;
const xn=-2*pi;
      xk=2*pi;
var mx,my,x,dx,y:real;
    grD,grM,x0,y0,i,px,py:integer;
    s:string;
begin
grD:=detect;{инициализация графического режима}
initgraph(grD,grM,'');
X0:=getmaxX div 2;{начало координат в центре экрана}
Y0:=getmaxY div 2;
{коэффициенты по осям для перевода реальных координат в экранные}
mx:=(getmaxX-60)/(xk-xn);
my:=200;
line(0,y0,getmaxX,y0); {ось Х}
line(x0,getmaxy,x0,0); {ось У}
{подписи оси Y}
line(x0-3,y0-round(sin(pi/2)*my),x0+3,y0-round(sin(pi/2)*my));
outtextXY(x0-10,y0-round(sin(pi/2)*my),'1');
line(x0-3,y0+round(sin(pi/2)*my),x0+3,y0+round(sin(pi/2)*my));
outtextXY(x0-15,y0+round(sin(pi/2)*my),'-1');
{подриси оси Х}
for i:=1 to 6 do   {максимальное количество засечек в одну сторону}
 begin
  line(x0+round(i*pi*mx/2),y0-3,x0+round(i*pi*mx/2),y0+3); {засечки на оси Х}
  line(x0-round(i*pi*mx/2),y0-3,x0-round(i*pi*mx/2),y0+3);
  if i mod 2=0 then {подписи через 1}
   begin
    str(i div 2,s);
    if s='1' then s:='';{1pi 1 не пишем}
    outtextXY(x0+round(i*pi*mx/2),y0+10,s+'pi');
    outtextXY(x0-round(i*pi*mx/2),y0+10,'-'+s+'pi');
   end;
  end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0-10,10, 'Y');
dx:=0.001;
{график}
x:=xn;
while x<=xk do
 begin
  px:=x0+round(x*mx); {изменение по оси Х}
  y:=sin(sqr(2*x-pi/2)); {график в реальных координатах}
  py:=y0-round(y*my);{в экранных}
  putpixel(px,py,12);{график красным}
  x:=x+dx; {наращиваем х}
 end;
readln
end.
1
0 / 0 / 1
Регистрация: 14.11.2010
Сообщений: 14
02.03.2011, 21:47  [ТС]
Cпасибо, все работает. Но мне надо, чтобы программа не сразу считала, как в вашем случае. А чтобы значения x=-2n , dx = 0.15 и kn=42 вводились вручную. Буду думать.
По-моему, лишь аргумент в квадрате.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.03.2011, 06:09
Цитата Сообщение от grishanya18 Посмотреть сообщение
По-моему, лишь аргумент в квадрате.
Но сами-то пишете
Pascal
1
y:=sqr(sin(2x - n/2));
Добавлено через 36 секунд
И потом везде не n/2 а pi/2

Добавлено через 3 минуты
И естественно pi вводить не нужно это константа, которую Паскаль определяет сам.
Потом, зачем вводить -2*pi, если это задано в условии, и откуда Вы взяли dx, kn, написали бы полностью задание...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.03.2011, 06:09
Помогаю со студенческими работами здесь

Модули.Работа с модулем GRAPH.
Ребята помогите пожалуйста 1)Исследовать область определения функции и построить график функции у=х+3/х-2 ...

Библиотечные модули системы программирования Паскаль: Graph
Разработать алгоритм и программу решения задач: а) необходимо сформировать из элементов (рисунок) узор и заполнить им экран. Элемент...

модули.Графика
Ребята помогите пожалуйста 1)Исследовать область определения функции и построить график функции у=х+3/х-2 2)Создать свой...

Построение изображения на языке паскаль с использованием пакета Graph
Структура программы на языке Паскаль представлена ниже: Uses Graph, Crt; var ErrorCode : integer; Color : word; GrDriver ,...

Текстовые файлы \ модули \ графика\игра
Доброго времени суток! Кто может помочь с решением данных задач, и последующим консультированием.. простого решения мало, я хочу понять...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru