write('Введите месяц (в формате ММ): '); readln(test);
val(test,mm,code);
until code=0;
if (mm<1) or (mm>12) then
begin
errors(2); flag:=false;
end; {if (mm<1) or (mm>12)}
until(flag);
repeat {ввод года с проверкой правильности}
flag:=true;
repeat
top(52); {вывод заголовка окна}
write('Введите год (в формате ГГГГ): '); readln(test);
val(test,gggg,code);
until code=0;
if (gggg<curyear-25) or (gggg>curyear) then
begin
errors(3); flag:=false;
end; {if (gggg<curyear-25) or (gggg>curyear)}
until(flag);
assign(fildata, filename);
reset(fildata);
s:=filesize(fildata); {определение количества записей в файле базы данных}
for j:=1 to 5 do educ[j]:=0;
comp:=0;
for i:=0 to s-1 do {расчет общего числа соискателей за указанный месяц}
begin {и числа соискателей по каждому виду образования}
seek(fildata, i);
read(fildata, buf);
if (buf.month=mm) and (buf.year=gggg) then
begin
case buf.edu of
1: educ[1]:=educ[1]+1;
2: educ[2]:=educ[2]+1;
3: educ[3]:=educ[3]+1;
4: educ[4]:=educ[4]+1;
5: educ[5]:=educ[5]+1;
end; {case buf.edu}
comp:=comp+1;
end; {if (buf.month=mm) and (buf.year=gggg)}
end; {for i:=0 to s-1}
close(fildata);
if comp>0 then for j:=1 to 5 do educp[j]:=(educ[j]/comp)*100;
windows(9, 3, 71, 22, 1); textbackground(12);
for x:=9 to 71 do
begin
gotoxy(x, 4); write(' ');
end; {for x:=9 to 71}
gotoxy(33, 4); textcolor(15); write('ОТЧЕТ НОМЕР 5');
textbackground(1); gotoxy(12, 6); write('Доля людей, вставших на учет в ');
case mm of
1: write('январе');
2: write('феврале');
3: write('марте');
4: write('апреле');
5: write('мае');
6: write('июне');
7: write('июле');
8: write('августе');
9: write('сентябре');
10: write('октябре');
11: write('ноябре');
12: write('декабре');
end; {case mm}
write(' ',gggg,' г., по виду'); gotoxy(12, 7); write('образования');
if comp=0 then
begin
gotoxy(12, 9); write('В указанном месяце на учет никто не вставал!');
bottom(21); {вывод строки состояния}
readkey;
end {if comp=0}
else
begin
gotoxy(20, 10);
write('┌─────────────────────┬───────────────┐');
gotoxy(20, 11); write('│ Вид образования │ Процент людей │');
gotoxy(20, 12);
write('├─────────────────────┼───────────────┤');
for j:=1 to 5 do
begin
gotoxy(20, 12+j); write('│ ');
case j of
1: write('Высшее');
2: write('Среднее специальное');
3: write('Среднее');
4: write('Неполное среднее');
5: write('Начальное');
end; {case j}
gotoxy(42, 12+j); write('│'); gotoxy(49, 12+j); write(educp[j]:3:0,'%');
gotoxy(58, 12+j); write('│');
end; {for j:=1 to 5}
gotoxy(20, 13+j);
write('└─────────────────────┴───────────────┘');
bottom(61); {вывод строки состояния}
readkey;
gd:=VGA; gm:=VGAhi;
initgraph(gd,gm,''); {инициализация графического режима}
if graphresult=grok then
begin
setcolor(15);
outtextxy(40,5,'Диаграмма, отражающая долю вставших на учет людей по видам образования');
outtextxy(190,25,'Месяц:');
case mm of
1: outtextxy(245,25,'январь');
2: outtextxy(245,25,'февраль');
3: outtextxy(245,25,'март');
4: outtextxy(245,25,'апрель');
5: outtextxy(245,25,'май');
6: outtextxy(245,25,'июнь');
7: outtextxy(245,25,'июль');
8: outtextxy(245,25,'август');
9: outtextxy(245,25,'сентябрь');
10: outtextxy(245,25,'октябрь');
11: outtextxy(245,25,'ноябрь');
12: outtextxy(245,25,'декабрь');
end; {case mm}
str(gggg,txty); outtextxy(340,25,'Год: '+txty);
stang:=0; {начальный угол}
for i:=1 to 5 do
begin
if educp[i]<>0 then
begin
ang[i]:=round((educp[i]/100)*360);
setfillstyle(1,i); setcolor(i);
if i=1 then endang:=ang[i]
else
if i<5 then endang:=endang+ang[i]+(360-endang-ang[i]);
pieslice(180,240,stang,endang,140);
stang:=stang+ang[i];
end; {if educp[i]<>0}
setfillstyle(1,i); setcolor(i);
bar(370,90+50*i,380,100+50*i);
perc:=round(educp[i]);
str(perc,txty);
setcolor(15);
case i of
1: outtextxy(390,92+50*i,'высшее ('+txty+'%)');
2: outtextxy(390,92+50*i,'среднее специальное ('+txty+'%)');
3: outtextxy(390,92+50*i,'среднее ('+txty+'%)');
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.