begin Write (‘Введіть A[‘,i,’]:’); ReadLn (A[i]); end;

Randomize;

GraphDriver:=VGA; {Ініціалізація графічного режиму}

GraphMode:=VGAHi; InitGraph(GraphDriver,GraphMode,’’) ;

SizeX:=round(640/N-5); {Пошук максимального значення в масиві для побудови діаграми на весь екран}

Мах:=А[1];

for і:=2 to N do

if A[i]>Max then Мах:=А[і];

SizeY:=round(480/Max); {Перетворення масиву значень у відповідності з коефіцієнтом пропорційності}

for i:=l to N do A[i]:=A[i]*SizeY;

for i:=1 to N do

begin {Встановлення випадковим чином кольору зафарбування стовпчиків діаграми}

SetFillStyle (1,random(14)+1); Bar ((i-l)*SizeX,480,i*SizeX-5,480-A[i]);

end;

Readkey; {Затримка зображення на екрані}

CloseGraph; {Закриття графічного режиму}

end.

ЗАДАЧА № 618

Умова: Секторною діаграмою називають круг, площі секторів якого пропорційні відповідним числовим величинам, узятим з деякої послідовності. Для заданої послідовності з п дійсних чисел побудувати секторну діаграму. Для наочності сектори діаграми зафарбувати різними кольорами.

Розв’язування: Кількість елементів діаграми в цій задачі вводиться так само, як і в попередньому випадку, тобто з клавіатури, а заповнення масиву даними зробимо генератором випадкових чисел. Далі, як і в попередній задачі, необхідно промасштабувати початкові значення для виведення їх на екран у вигляді кругової діаграми. Для цього спочатку знаходимо суму всіх елементів масиву, а потім масштабуємо їх за формулою

де Sum - загальна сума елементів масиву, 360 - кількість градусів у повному колі.

Сама діаграма будується за допомогою процедури PieSlice, що виводить на екран зафарбований сектор круга. Колір зафарбування задається процедурою SetFillStyle, а початковий та кінцевий кути сектора обчислюються від поточного кута. Angle з урахуванням значення елементу масиву. Центр кола, на якому будується кругова діаграма, завжди константний (320; 240). Програма, що реалізує описаний алгоритм, має вигляд:

Program Example_618;

Uses graph; (Підключення бібліотек}

Var GraphDriver,GraphMode:integer; N, і : integer;

Sum,Ang : real;

A : array [1..100] of real; S : string; Begin

ClrScr; Randomize;

Write (ЛВведіть кількість елементів діаграми: *).;

ReadLn (N);

(Введення значень для побудови діаграми}

for i:=l to N do A[i]:=random*200;

GraphDriver:=VGA;

GraphMode:=VGAHi;

InitGraph(GraphDriver,GraphMode,»);

Sum:=0;

for i:=1 to N do Sum:=Sum+A[i];

for i:=1 to N do A[i]:=A[i]*360/Sum;

Ang:=0;

for i:=1 to N do

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату