Ну вот:
Код:
Uses Graph, CRT;
TYPE
AR=ARRAY[1..6] of REAL;
Const
Year_1995:AR=(10.3, 8.9, 6.2, 5.2, 4.4, 65.0);
Year_1996:AR=(9.8, 8.1, 7.5, 7.9, 3.4, 63.3);
Firm:ARRAY[1..6] of String=('Compaq','IBM','Packard Bell (NEC)',
'Apple','HP','Others');
Procedure Diagram(Ad:AR; Xc:Word; S:String);
var
i:Integer;
Ang_bef,Ang_aft,Ang:Word;
begin
SetColor(15);
SetTextStyle(DefaultFont,HorizDir,2);
SetTextJustify(CenterText,TopText);
OutTextXY(Xc,10,S);
SetTextStyle(DefaultFont,HorizDir,1);
Ang_bef:=0;
For i:=1 to 6 do
begin
SetFillStyle(1,8+i);
SetColor(8+i);
Ang_Aft:=Ang_bef+ROUND(3.6*Ad[i]);
Ang:=(Ang_bef+Ang_Aft) div 2;
PieSlice(Xc,240,Ang_Bef,Ang_Aft,100);
If i<4 then
SetTextJustify(LeftText,CenterText)
else
SetTextJustify(RightText,CenterText);
OutTextXY(Xc+ROUND(110*Cos(Ang/180*Pi)),
240-ROUND(110*Sin(Ang/180*Pi)),Firm[i]);
Ang_bef:=Ang_Aft;
end;
end;
BEGIN
InitGraph(..);{Параметры этой функции задайте сами}
Diagram(Year_1995,140,'Market 1995');
Diagram(Year_1996,460,'Market 1996');
ReadKey;
CloseGraph;
END.
В результате должно получиться так:
А уж всякие там файловые вводы, организацию параметров процедуры и прочую ерунду поправьте, если препод будет настаивать на этих дурацких указулях.
P.S. Почему на правой диаграмме лезут какие-то черные полосы - так и не понял. Надеюсь, они не помешают.