Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Степан / Информатика / Паскаль (Яньков).doc
Скачиваний:
70
Добавлен:
20.04.2015
Размер:
660.99 Кб
Скачать

u

program P11_1

uses graph;

Var d,I,m,rx,ry:integer;

begin

Initgraph(d,m,''); {переход в графику}

ry:=getmaxy; rx:=getmaxx;{размер экрана}

line(0,0,rx,ry);{первая диагональ}

line(0,ry,rx,0);{вторая диагональ}

for i:=1 to 4 do begin{окружности}

circle(rx div 2,ry div 2,50*i);

end;

readln;{пауза для просмотра результата}

closegraph;{закрытие графического режима}

end.

ses graph;

Var d,m,rx,ry:integer;

X,y,xn,xk,ymin,ymax,dx:real; msy,msx:real;

function f(x:real):real; {вычисление функции}

begin f:=sin(x)*x end;

begin

initgraph(d,m,''); {переход в графический режим}

ry:=getmaxy+1; rx:=getmaxx+1; {размер экрана}

line(0,0,0,ry); {ось Y}

xn:=0; xk:=60; dx:=0.01;{параметры аргумента}

x:=xn; {начальное Х}

ymin:=f(x); ymax:=f(x);

while x<=xk do begin {поиск максимума и минимума Y}

y:=f(x);

if y>ymax then ymax:=y;

if y<ymin then ymin:=y;

x:=x+dx; {изменяем Х}

end;

msy:=ry/abs(ymax-ymin); {масштаб по Y}

msx:=rx/abs(xk-xn); {масштаб по X}

x:=xn; {начальное Х}

while x<=xk do begin {рисование}

y:=f(x);

putpixel(round((x-xn)*msx),-round((y-ymax)*msy),2); {точки}

lineto(round((x-xn)*msx),-round((y-ymax)*msy)); {отрезки}

x:=x+dx; {изменяем Х}

end;

line(0,-round(-ymax*msy),rx,-round(-ymax*msy)); {ось Х}

readln; {пауза для просмотра картинки}

closegraph;

end.

Задания.

а). Решить аналогичную задачу, но ось Yнаправить горизонтально, а Х – вертикально.

б). Известна зарплата (массив zar[1..5]) работников (N=5) бригады. Построить диаграмму из вертикальных линий.

в). Условие то же, но диаграмма столбиковая. Замечание. Ширина столбца определяется делением ширины экрана на число рабочих. Однако, если ширина столбца не кратна размеру экрана, крайний столбец будет отображен не полностью. При программировании следует учесть этот фактор, уменьшив ширину столбца.

г). Известна зарплата (массив zar[1..5]) и премия (массивp[1..5]) каждого изN=5 работников бригады. Построить совмещенную столбиковую диаграмму (на столбике зарплаты стоит столбик премии). Премия должна быть заштрихована командойSetFillStyle.

д). Для той же задачи построить секторную диаграмму зарплат. Подсказка. Сначала следует найти сумму всех зарплат s. Затем перевести зарплату каждого работника в градусы его сектора на диаграмме zar[i]/s*360 и запомнить ее в массиве zar[1..5]. Далее вычислить начальный и конечный угол каждого радиуса каждого сектора, нарисовать диаграмму командой PieSlice и раскрасить ее.