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

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

01.06.2016, 00:44. Просмотров 166. Ответов 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
Другие темы раздела
Turbo Pascal Перевод кода java - Шифр Вернама http://www.cyberforum.ru/turbo-pascal/thread1750846.html
Пишу курсовую, одно из заданий - Шифр Вернама На java код: import java.util.Random; import java.util.Scanner; public class Vernem { public static void main(String args) { ...
Turbo Pascal Вычисление суммы элементов массива а, значения которых кратны N Составить программу вычисления суммы элементов массива а, значения которых кратные N с использованием файлов для ввода-вывода данных и выполнить ее в среде системы программирования Turbo Pascal 6.0 http://www.cyberforum.ru/turbo-pascal/thread1750837.html
Пульт для видеотелефона Turbo Pascal
Пульт для видеотелефона Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или output.txt Петя сконструировал пульт для...
Построение диаграммы Turbo Pascal
добрый день. имеется задача, в ней я строю диаграмму колонками, а надо переделать ее на круговую. каким образом можно это сделать быстро? код самой диаграммы. в ней три колонки, строится она от...
Turbo Pascal Найти минимальный из элементов, содержащихся в интервале (a, b) http://www.cyberforum.ru/turbo-pascal/thread1750373.html
Здравствуйте! Есть задача - Даны числа a, b (0 < a < b) и набор из десяти элементов. Найти минимальный из элементов, содержащихся в интервале (a, b). Если требуемые элементы отсутствуют, то...
Turbo Pascal Построение графиков функций Разработать программу с использованием процедур и функций модулей CRT,DOS и GRAPH. Задание 19 подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru