Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для ShutDown
13 / 13 / 2
Регистрация: 07.04.2009
Сообщений: 22

Графика на Pascal

20.05.2009, 16:49. Показов 1052. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я написал прогу которая строит график функции.Помогите понять в чом прикол она некорректно работает, если можна посоветуйте как оптимизировать прогу!
Модуль GrDriv это модуль для определения драйвера для Graph

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
Unit GrDriv;
Interface
Uses Crt, Graph;
Procedure ingraph;
Implementation
Procedure InGraph;
var
   GraphDriver,
   GraphMode,
   ErrorCode:Integer;
Begin
   GraphDriver:=Detect;
   initgraph (GraphDriver, graphmode,'C:\BG');
   ErrorCode:=GraphResult;
    if ErrorCode <> grOK then
    begin
        writeln ('ERROR', GraphErrorMsg (ErrorCode));
        readln;
        Halt(1)
      end;
End;
begin
InGraph;
end.
Прога :

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
Program GraphFunction;
Uses Crt,GrDriv,Graph;
Var Cx,Cy:integer;
    Scale:real;
Function F(x:real):real;
Begin
 F:=sin(x);
end;
 
Procedure Axes;
Begin
   SetColor(1);
   Line(Cx,0,Cy,GetMaxY);
   Line(0,Cy,GetMaxX,cY);
 
   Line(GetMaxX-10,(Cy)-5,GetMaxX,Cy);
   Line(GetMaxX-10,(Cy)+5,GetMaxX,Cy);
 
   OutTextXY(GetMaxX-10,Cy+20,'X');
   OutTextXY(Cx+10,10,'Y');
end;
 
Procedure GraDuir;
var i,j:real;
    s:String[7];
Begin
   SetColor(1);
   j:=0 ;
 
   repeat
     i:=Cx+(-j)*scale;
     Line(Round(i),Cy-5,round(i),Cy+5);
     if j<>0 then
      Begin
         Str(-j:6:2,s);
         OutTextXY(round(i)-10,Cy+10,s);
      end;
     i:=Cx+j*Scale;
     Line(round(i),Cy-5,round(i),Cy+5);
     if j<>0 then
      Begin
         Str(-j:6:2,s);
         OutTextXY(round(i)-10,Cy+10,s);
      end;
     j:=j+pi;
   until j=8*pi;
 
   j:=0 ;
 
   repeat
     i:=Cy+(-j)*scale;
     Line(Cx+3,round(i),Cx-3,round(i));
     if j<>0 then
      Begin
         Str(-j:4:1,s);
         OutTextXY(Cx+15,round(i)-2,s);
      end;
     i:=CY+j*Scale;
     Line(Cx+3,round(i),Cx-3,round(i));
     if j<>0 then
      Begin
         Str(-j:6:2,s);
         OutTextXY(Cx+15,round(i)-2,s);
      end;
     j:=j+pi +0.5;
   until j=2;
end;
 
Procedure BGraph;
var x0,y0,x1,y1: integer;
    x:real;
begin
  for x0:=0 to GetMaxX do
  Begin
    x:=(x0-cx)/scale;
    y0:=round(cy-scale*f(x));
     if x0>0 then
      line(x0,y0,x1,y1);
      x1:=x0;
      y1:=y0;
  end;
end;
 
Begin
   InGraph;
 
   cx:=GetMaxX div 2;
   cy:=GetMaxY div 2;
   SetColor(15);
   OutText('input scale (20....100) :');
   GotoXy(27,1);
   read(scale);
   clearDevice;
   Axes;
   GraDuir;
   OutTextXY(10,30,'');
   BGraph ;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.05.2009, 16:49
Ответы с готовыми решениями:

Графика в Pascal
Разработать подпрограмму-процедуру для построения графического обозначения(Turbo Pascal)

Графика в Pascal
Добрый день,товарищи. помогите пожалуйста решит задачу построение графика функций y=sin(x) y=cos(x) y=sqr(x)

графика в pascal
Графика Задача 1. Написать процедуру рисование равносторонего треугольника с заданной стороной (в процедуре задается центр...

1
 Аватар для NickA
35 / 34 / 17
Регистрация: 28.04.2009
Сообщений: 67
20.05.2009, 17:08
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
Program GraphFunction;
Uses Crt,GrDriv,Graph;
Var Cx,Cy:integer;
    Scale:real;
Function F(x:real):real;
Begin
 F:=sin(x);
end;
 
Procedure Axes;
Begin
   SetColor(1);
   Line(Cx,0,Cx,GetMaxY);
   Line(0,Cy,GetMaxX,cY);
 
   Line(GetMaxX-10,(Cy)-5,GetMaxX,Cy);
   Line(GetMaxX-10,(Cy)+5,GetMaxX,Cy);
 
   Line(Cx, 0, Cx-5, 10);
   Line(Cx, 0, Cx+5, 10);
 
   OutTextXY(GetMaxX-10,Cy+20,'X');
   OutTextXY(Cx+10,10,'Y');
end;
 
Procedure GraDuir;
var i,j:real;
    s:String[7];
Begin
   SetColor(1);
   j:=0 ;
 
   repeat
     i:=Cx+(-j)*scale;
     Line(Round(i),Cy-5,round(i),Cy+5);
     if j<>0 then
      Begin
         Str(j:5:2,s);
         OutTextXY(round(i)-TextWidth(s)div 2,Cy+10,s);
      end;
     i:=Cx+j*Scale;
     Line(round(i),Cy-5,round(i),Cy+5);
     if j<>0 then
      Begin
         Str(-j:5:2,s);
         OutTextXY(round(i)-TextWidth(s)div 2,Cy+10,s);
      end;
     j:=j+pi;
   until j>=8*pi;
 
   j:=0 ;
 
   repeat
     i:=Cy+(-j)*scale;
     Line(Cx+3,round(i),Cx-3,round(i));
     if j<>0 then
      Begin
         Str(j:5:2,s);
         OutTextXY(Cx+15,round(i)-2,s);
      end;
     i:=CY+j*Scale;
     Line(Cx+3,round(i),Cx-3,round(i));
     if j<>0 then
      Begin
         Str(-j:5:2,s);
         OutTextXY(Cx+15,round(i)-2,s);
      end;
     j:=j+0.5;
   until j>=2;
end;
 
Procedure BGraph;
var x0,y0,x1,y1: integer;
    x:real;
begin
  SetColor(2);
  for x0:=0 to GetMaxX do
  Begin
    x:=(x0-cx)/scale;
    y0:=round(cy-scale*f(x));
     if x0>0 then
      line(x0,y0,x1,y1);
      x1:=x0;
      y1:=y0;
  end;
end;
 
Begin
   InGraph;
   cx:=GetMaxX div 2;
   cy:=GetMaxY div 2;
   SetColor(15);
   OutText('input scale (20....100) :');
   GotoXy(27,1);
   read(scale);
   clearDevice;
   Axes;
   GraDuir;
   OutTextXY(10,30,'');
   BGraph;
   readkey;
end.
P.S. Сори, оптимизацией заморачиваться некогда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.05.2009, 17:08
Помогаю со студенческими работами здесь

Графика Pascal
Доброго времени суток, друзья! Необходимо вспомнить графику в Pascal ABC, c которой, увы, всегда были проблемы. Помогите, пожалуйста, с...

Графика в Free Pascal
Помогите доработать пожалуйста program lab6; uses Graph,crt; const min=-10; max=10; D1=-0.013577; D2=-0.119558;

Графика в Pascal ABC
К примеру, есть у меня простая линия. Какую процедуру или функцию мне надо использовать в Pascal ABC, чтобы закрасить эту линию в красный...

Графика,множества в Pascal
Помогите плиз с этими задачами,очень надо. 1.Построить график функции: F(x,y)=x6-x4+y2=0 2.Из множества целых чисел 1..100 выделить...

Графика в Pascal ABC
Знаю, что initgraph не нужен. Модуль graph должен записываться как graphABC. но что еще нужно изменить чтобы запустить на pascal ABC? ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru