Пишу курсовик. Надо построить круговую диаграмму. Сектора строятся правильно, а вот надписи к ним ставятся под каким-то непонятным углом. Code: on:array [1..100] of string[20]; oc:array [1..100] of integer; ... Code: { Вывести 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 [COLOR=Red]Line(200, 200, 200 + Trunc(120 * cos(a)), 200 + Trunc(120 * sin(a)));[/COLOR] 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; собственно проблема отмечена красным. По идее должен рисоваться сектор, закрашенный красным, а на практике получается что красные линии раскиданы равномерно по всей диаграмме. Может быть надо какой-то флаг компилятора включить или что?
м) с графикой лучше посидеть всё на бумаге начертить. возьми на листре линий 5 проведи по заданным координатам. мне просто не охота код перебирать.
Я всегда думал что построить линию повернутую на заданный угол можно по формуле: XK = XN + Длина_линии * cos(Угол) YK = YN + Длина_линии * sin(Угол) Но в паскале эта формула дает какой-то бред. Совсем не то, что я ожидал.