ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
Turbo Pascal. Круговая диаграмма |

15.02.2010, 11:34
|
|
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме: 388345
Репутация:
58
|
|
Turbo Pascal. Круговая диаграмма
Пишу курсовик. Надо построить круговую диаграмму.
Сектора строятся правильно, а вот надписи к ним ставятся под каким-то непонятным углом.
Код:
on:array [1..100] of string[20];
oc:array [1..100] of integer;
...
Код:
{ Вывести on[..] и oc[..] в порядке убывания oc }
angle_pred:=0;
clrscr;
DetectGraph(Device, Mode);
InitGraph(Device, Mode, 'EGAVGA.BGI');
SetTextStyle(3, HorizDir, 2);
SetFillStyle(11, 11);
repeat
f := false;
m := -1; { Текущее наибольшее значение oc }
for i := 1 to 100 do
begin
if oc[i] > m then
begin
i2 := i;
m := oc[i];
f := true;
end;
end;
if (f = true) then
begin
if (oc[i2] > 0) then
begin
{ Вывести часть диаграммы }
angle := angle_pred + Trunc(oc[i2] / c * 360);
setcolor(12);
for a:=0 to 45 do
begin
Line(200, 200, 200 + Trunc(120 * cos(a)), 200 + Trunc(120 * sin(a)));
end;
{
Str(angle, tmp);
outtextxy(200 + Trunc(120 * cos(angle)), 200 + Trunc(120 * sin(angle)), tmp);
}
setcolor(i2);
setfillstyle(i2, i2);
setlinestyle(0, 0, 1);
PieSlice(200, 200, angle_pred, angle-1, 100);
angle_pred := angle;
end;
oc[i2] := -1;
end;
until (f = false) or ((i=100) and (oc[i2]=0));
ReadKey;
CloseGraph;
RestoreCrtMode;
собственно проблема отмечена красным. По идее должен рисоваться сектор, закрашенный красным, а на практике получается что красные линии раскиданы равномерно по всей диаграмме.
Может быть надо какой-то флаг компилятора включить или что?
Последний раз редактировалось ZagZag; 15.02.2010 в 11:37..
|
|
|

16.02.2010, 12:39
|
|
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме: 388345
Репутация:
58
|
|
Неужели никто в досовском паскале круговые диаграммы не делал? Ну что ж вы, народ? XD
|
|
|

16.02.2010, 22:50
|
|
Познающий
Регистрация: 28.09.2008
Сообщений: 65
Провел на форуме: 152084
Репутация:
8
|
|
м) с графикой лучше посидеть всё на бумаге начертить. возьми на листре линий 5 проведи по заданным координатам. мне просто не охота код перебирать.
|
|
|

16.02.2010, 23:14
|
|
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме: 388345
Репутация:
58
|
|
Я всегда думал что построить линию повернутую на заданный угол можно по формуле:
XK = XN + Длина_линии * cos(Угол)
YK = YN + Длина_линии * sin(Угол)
Но в паскале эта формула дает какой-то бред. Совсем не то, что я ожидал.
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Задачи. Turbo Pascal
|
Richard |
С/С++, C#, Delphi, .NET, Asm |
13 |
18.05.2009 21:13 |
|
turbo pascal
|
sadfeel |
С/С++, C#, Delphi, .NET, Asm |
0 |
28.02.2009 19:37 |
|
СРОЧНО!!! Turbo Pascal
|
MAG0t |
Разное - Покупка, продажа, обмен |
3 |
23.12.2008 18:36 |
|
TURBO PASCAL 7 1.0
|
Daemond |
С/С++, C#, Delphi, .NET, Asm |
1 |
03.12.2008 22:32 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|