Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet_po_UVP_4.doc
Скачиваний:
5
Добавлен:
18.12.2018
Размер:
75.26 Кб
Скачать

Работа с текстом в графическом режиме Процедуры работы с текстом

Procedure ...

SetTextStyle ( Font, Direction, CharSize : Word ) ;

устанавливает текущие тип шрифта, направление текста и размер символов.

Font —тип шрифта.

Direction —направление текста.

CharSize —размер символов.

OutTextXY ( x, y : Integer; TextString : String ) ;

выводит последовательность символов, начиная с заданных координат (x, y).

x, y —исходные координаты. TextString —выводимый текст.

Задание:

Используя графические возможности языка Паскаль написать программы, реализующие:

  1. графическое представление результатов в виде а) круговых и б) «объемных» столбчатых диаграмм (в одной программе с просмотром по очереди, используя одинаковые исходные данные);

диаграммы должны быть размещены в выбранной части экрана при любых вводимых данных;

при этом дополнительно должны приводиться:

  • надписи на диаграммах или рядом с диаграммами (абсолютные числовые значения и их процентное соотношение);

  • сноски, поясняющие цвет каждого сектора или столбика диаграммы (смысловое содержание: страна, озеро и т.п.);

количество (от 2 до 8) и абсолютные значения числовых данных (а не их процентное соотношение) вводятся с клавиатуры — программа сама должна подсчитывать процентное соотношение и выбирать долю круга (сектор) в круговых диаграммах или масштаб (высоту столбиков и размещение столбиков по горизонтали) в столбчатых диаграммах по введенным абсолютным значениям;

смысловое наполнение придумать самостоятельно — предусмотреть 8 смысловых названий, например, в виде типизованной константы – строкового массива и при вводе с клавиатуры предложить ввести числовые данные для введенного предварительно количества первых из предусмотренных конкретных названий;

Program vp4_1;

Uses

graph, crt;

const

Topon=true;

topOff=false;

mas : array[1..8] of string = ('monitori','mishki','klaviatyri','kolonki' ,'modemi','fleshki','bloki','printeri');

Var

driver, mode, i, xc, yc, r ,sangle, k, alpha, xlv,ylv,xpn,ypn,x2x1, n : integer;

mag : array[1..8] of longint;

st,st1:string;

ang,ang_bef,ang_aft: word;

s , max : longint;

begin

clrscr;

Writeln( 'Vvvedite kolocgestvo ystroistv:' );

readln(n);

writeln( 'Vvedite skolko tovara ostalos:' );

for i:=1 to n do

begin

write(mas[i],'=');readln(mag[i])

end;

setviewport(0,0,300,300,true);

driver := detect;

initgraph( driver, mode, '' );

xc := getmaxx div 2;

yc := getmaxy div 2 ;

setactivepage(0);

R := 100; SAngle := 0; i := 1;

Ang_bef := 0; s:=0;

for k:=1 to n do s:=s+mag[k];

for k:=1 to n do

begin

Alpha := round(mag[k] / S * 360);

setcolor(i);

setfillstyle(1, i) ;

sector(Xc, Yc, SAngle, SAngle + Alpha, R, R);

Ang_Aft := Ang_bef+ROUND(mag[k]/s*360);

Ang := (Ang_bef+Ang_Aft) div 2;

str(mag[k],st);

str(round( mag[k]/s *100 ),st1);

settextstyle(0,0,1);

if (ang_aft <=90) or (ang_aft >=270) then

outTextXY(Xc+ROUND((r+20)*Cos(Ang/180*Pi)),yc-ROUND((r+20)*Sin(Ang/180*Pi)),st+'-' +st1+'%')

else

outTextXY(Xc+ROUND((r+30)*Cos(Ang/180*Pi))-40,yc-ROUND((r+20)*Sin(Ang/180*Pi)),st+'-' +st1+'%');

Ang_bef := Ang_Aft;

SAngle := SAngle + Alpha; i:= i + 1;

bar(Xc+200, Yc-250+(i-1)*20, Xc+220, Yc-250+(i-1)*20+15);

outtextxy(Xc + 230, Yc - 250 + 5 + (i - 1) * 20, mas[k]);

end;

readln;

clearviewport;

setactivepage(1);

max:=mag[1];

for k:=2 to n do if mag[k] > max then max := mag[k];

Xlv := 200; Ylv := 200; Xpn:= Getmaxx - 250; Ypn:= GetMaxY-70;

i:= 0;s:=0;

for k:=1 to n do s:=s+mag[k];

for k:=1 to n do

begin

setcolor( i+1 ); setfillstyle( 1,i );

x2x1:=round(Xlv+(i+1)*(Xpn-Xlv)/n)-round(Xlv+i*(Xpn-Xlv)/n);

bar3d(round(Xlv+i*(Xpn-Xlv)/n), Ypn,round(Xlv+(i+1)*(Xpn-Xlv)/n),round(Ypn-(Ypn-Ylv)/max*mag[k]), 15 ,topon);

str(mag[k],st);

str(round(mag[k]/s*100),st1);

settextstyle(0,1,1);

outTextXY(round(Xlv+20+i*(xpn-xlv)/n),ypn+5,st+'-' +st1+'%');

i:= i + 1;

bar(getMaxx-70, 50+(i-1)*20, getMaxx-50, 50+(i-1)*20+15);

settextstyle(0,0,1);

outtextxy(getMaxx-40, 50+(i-1)*20+8, mas[k]);

end;

setvisualpage(1);

readln;

closegraph

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]