Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Poiz0N
4 / 4 / 2
Регистрация: 13.02.2013
Сообщений: 68
#1

Вывод круговой диаграммы

01.06.2016, 00:44. Просмотров 169. Ответов 0
Метки нет (Все метки)

добрый день. программа выводит столбцовую диаграмму а надо чтобы выводила круговую. все попытки сделать круговую увенчались разрывом диаграммы.
вот код, той программы которая с столбцовой диаграммой
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
program k1;
uses crt,graph;
var gd,gm,t,i,i1, te4,te5,tt:integer;
cc:char;
te1,te2,te3:string;
x,y,z:array[1..100] of integer;
koldiag:array[0..4] of integer;
const x0=320;y0=240;r1=23;r2=11;k=5;
 
begin
randomize;
writeln('Vvedite kolvo tochek');
readln(t);
tt:=trunc(sqrt(r1*r1/2));
for i:=1 to t do begin
x[i]:=-31+random(56);
y[i]:=-25+random(56);
if(((x[i]*x[i]+y[i]*y[i])=r1*r1) and (-x[i]>=y[i])) then z[i]:=0
else if(((x[i]*x[i]+y[i]*y[i])=r2*r2) and (-x[i]>=y[i])) then z[i]:=0
else if(((x[i]*x[i]+y[i]*y[i])<r2*r2) and (-x[i]>=y[i])) then z[i]:=1
else if(((x[i]*x[i]+y[i]*y[i])<r1*r1) and (-x[i]>=y[i])) then z[i]:=2
else if ((-x[i]<=y[i]) and (x[i]>-tt) and (x[i]<tt) and (y[i]>-tt) and (y[i]<tt)) then z[i]:=2
else z[i]:=3;
koldiag[z[i]]:=koldiag[z[i]]+1;
end;
gd:=detect;
Initgraph(gd,gm,'c:\tp\bgi\');
setcolor(4);
setfillstyle(3,red);
arc(x0,y0,135,315,k*r1);
line(x0+r1*k,y0+r1*k,x0-r1*k,y0-r1*k);
floodfill(x0-10,y0,4);
setcolor(5);
 
arc(x0,y0,135,315,k*r2);
line(x0+r2*k,y0+r2*k,x0-r2*k,y0-r2*k);
setfillstyle(1,15);
floodfill(x0-10,y0,5);
setcolor(4);
arc(x0,y0,135,315,k*r2);
line(x0+r2*k,y0+r2*k,x0-r2*k,y0-r2*k);
line(x0-trunc(sqrt(r1*r1/2))*k,y0-trunc(sqrt(r1*r1/2))*k,x0+trunc(sqrt(r1*r1/2))*k,y0-trunc(sqrt(r1*r1/2))*k);
line(x0+trunc(sqrt(r1*r1/2))*k,y0-trunc(sqrt(r1*r1/2))*k,x0+trunc(sqrt(r1*r1/2))*k,y0+trunc(sqrt(r1*r1/2))*k);
setfillstyle(3,red);
floodfill(x0+10,y0,4);
setcolor(green);
line(20,y0,620,y0);
line(x0,20,x0,500);
line(x0-k,y0-trunc(k/3),x0-k,y0+trunc(k/3));
line(x0+k,y0-trunc(k/3),x0+k,y0+trunc(k/3));
line(x0-trunc(k/3),y0-k,x0+trunc(k/3),y0-k);
line(x0-trunc(k/3),y0+k,x0+trunc(k/3),y0+k);
setcolor(10);
for i:=1 to t do begin
circle(x0+x[i]*k,y0-y[i]*k,trunc(k/2));
if(z[i]=0) then te1:='Ha granu'
else if(z[i]=1) then te1:='Vnytru beloy figuru'
else if(z[i]=2) then te1:='Vnytru zashtrux'
else if(z[i]=3) then te1:='Vne fugyr';
str(x[i],te2);
str(y[i],te3);
outtextxy(10,10*i,te2+' '+te3+' '+te1);
end;
{setfillstyle(3,5);   }
te4:=160;
te5:=180;
i1:=1;
for i:=0 to 3 do begin
 
 
setfillstyle(3,i1);
bar(x0+te4,y0-50,x0+te5,y0-50-10*koldiag[i]);
te4:=te4+40;
te5:=te5+40;
i1:=i1+1;
end;
setcolor(4);
 
rectangle(450,300,460,310);
setfillstyle(3,4);
floodfill(455,305,4);
outtextxy(465,302,'- Vne fugyr');
setcolor(3);
rectangle(450,320,460,330);
setfillstyle(3,3);
floodfill(455,325,3);
outtextxy(465,322,'- Vnytru zashtrux');
setcolor(2);
rectangle(450,340,460,350);
setfillstyle(3,2);
floodfill(455,345,2);
outtextxy(465,342,'- Vnytru beloy figuru');
setcolor(1);
rectangle(450,360,460,370);
setfillstyle(3,1);
floodfill(455,365,1);
outtextxy(465,362,'- Ha granu');
{repeat
if keypressed then
begin
cc:=readkey;
end;
until cc=#27; }
readkey;
end.
Добавлено через 5 часов 23 минуты
сделал диаграмму круговую, но она не до конца бывает при некоторых значениях рисует круг
вот код
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
program k1;
uses crt,graph;
var b,r,gd,gm,t,i,i1, te4,te5,tt,a:integer;
cc:char;
te1,te2,te3:string;
x,y,z:array[1..100] of integer;
koldiag:array[0..4] of integer;
const x0=320;y0=240;r1=23;r2=11;k=5;
 
begin
randomize;
writeln('Vvedite kolvo tochek');
readln(t);
tt:=trunc(sqrt(r1*r1/2));
for i:=1 to t do begin
x[i]:=-31+random(56);
y[i]:=-25+random(56);
if(((x[i]*x[i]+y[i]*y[i])=r1*r1) and (-x[i]>=y[i])) then z[i]:=0
else if(((x[i]*x[i]+y[i]*y[i])=r2*r2) and (-x[i]>=y[i])) then z[i]:=0
else if(((x[i]*x[i]+y[i]*y[i])<r2*r2) and (-x[i]>=y[i])) then z[i]:=1
else if(((x[i]*x[i]+y[i]*y[i])<r1*r1) and (-x[i]>=y[i])) then z[i]:=2
else if ((-x[i]<=y[i]) and (x[i]>-tt) and (x[i]<tt) and (y[i]>-tt) and (y[i]<tt)) then z[i]:=2
else z[i]:=3;
koldiag[z[i]]:=koldiag[z[i]]+1;
end;
gd:=detect;
Initgraph(gd,gm,'c:\tp\bgi\');
setcolor(4);
setfillstyle(3,red);
arc(x0,y0,135,315,k*r1);
line(x0+r1*k,y0+r1*k,x0-r1*k,y0-r1*k);
floodfill(x0-10,y0,4);
setcolor(5);
 
arc(x0,y0,135,315,k*r2);
line(x0+r2*k,y0+r2*k,x0-r2*k,y0-r2*k);
setfillstyle(1,15);
floodfill(x0-10,y0,5);
setcolor(4);
arc(x0,y0,135,315,k*r2);
line(x0+r2*k,y0+r2*k,x0-r2*k,y0-r2*k);
line(x0-trunc(sqrt(r1*r1/2))*k,y0-trunc(sqrt(r1*r1/2))*k,x0+trunc(sqrt(r1*r1/2))*k,y0-trunc(sqrt(r1*r1/2))*k);
line(x0+trunc(sqrt(r1*r1/2))*k,y0-trunc(sqrt(r1*r1/2))*k,x0+trunc(sqrt(r1*r1/2))*k,y0+trunc(sqrt(r1*r1/2))*k);
setfillstyle(3,red);
floodfill(x0+10,y0,4);
setcolor(green);
line(20,y0,620,y0);
line(x0,20,x0,500);
line(x0-k,y0-trunc(k/3),x0-k,y0+trunc(k/3));
line(x0+k,y0-trunc(k/3),x0+k,y0+trunc(k/3));
line(x0-trunc(k/3),y0-k,x0+trunc(k/3),y0-k);
line(x0-trunc(k/3),y0+k,x0+trunc(k/3),y0+k);
setcolor(10);
for i:=1 to t do begin
circle(x0+x[i]*k,y0-y[i]*k,trunc(k/2));
if(z[i]=0) then te1:='Ha granu'
else if(z[i]=1) then te1:='Vnytru beloy figuru'
else if(z[i]=2) then te1:='Vnytru zashtrux'
else if(z[i]=3) then te1:='Vne fugyr';
str(x[i],te2);
str(y[i],te3);
outtextxy(10,10*i,te2+' '+te3+' '+te1);
end;
{setfillstyle(3,5);   }
 
te4:=500;
te5:=160;
r:=50;
b:=round(360*koldiag[z[1]]/t);
setcolor(1);
setfillstyle(1,1);
pieslice(te4,te5,0,b,r);
i1:=2;
for i:=2 to 4 do
 begin
   a:=round(360*koldiag[z[i]]/t)+b;
   setcolor(i);
   setfillstyle(3,i1);
   pieslice(te4,te5,a,b,r);
   b:=a;
   i1:=i1+1;
 end;
 
 
 
 
setcolor(4);
 
rectangle(450,300,460,310);
setfillstyle(3,4);
floodfill(455,305,4);
outtextxy(465,302,'- Vne fugyr');
setcolor(3);
rectangle(450,320,460,330);
setfillstyle(3,3);
floodfill(455,325,3);
outtextxy(465,322,'- Vnytru zashtrux');
setcolor(2);
rectangle(450,340,460,350);
setfillstyle(3,2);
floodfill(455,345,2);
outtextxy(465,342,'- Vnytru beloy figuru');
setcolor(1);
rectangle(450,360,460,370);
setfillstyle(3,1);
floodfill(455,365,1);
outtextxy(465,362,'- Ha granu');
{repeat
if keypressed then
begin
cc:=readkey;
end;
until cc=#27; }
readkey;
end.
есть какие-то мысли?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2016, 00:44
Ответы с готовыми решениями:

Составить процедуру графического построения круговой диаграммы
Программирование задач создания графических объектов. ТРЕБОВАНИЯ! Каждая...

Вывод на экран столбиковой диаграммы, представляющей оптовые и розничные цены наименований кофе
Написать программу, которая выводит на экран столбиковую диаграмму,...

матрицы! круговой сдвиг
как из матрицы 1 2 3 4 5 6 7 8 9 получить матрицу вида такого 4 1...

Вывести на экран монитора круговой сектор
&quot;Вивести на екран монитора коловий сектор таким чином шоб вин змінював свій...

Вывести на экран монитора круговой сектор и закрасить его зеленым цветом
Вывести на экран монитора круговой сектор и закрасить его зеленым...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2016, 00:44

Вывести на экран монитора круговой сектор, изменять его цвет со светло-синего на светло-красный
Вывести на экран монитора круговой сектор таким образом, чтобы он менял свой...

Создание диаграммы.
Ребята, молю вас о помощи. К завтрашнему дню нужно сдавать программу, которая...

Построение диаграммы
как сделать, чтобы диаграмма в паскале вращалась, программа для построения...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru