Домашние задания: Информатика

Информатика, паскаль. помогите пж, прогу делал, но все равно что-то не так

uses crt,graph;
const n=4;
{массив названий}
kt:array[1..n] of string=('Otlicniki','Horoshisty','Uspevayushie',
'Neuspevayushie');
var z:array [1..n] of integer; {Задаём массив}
i,x,y,x1,y1,r,a,b,s:integer;
st:string;
begin
clrscr;
writeln('Vvedite kolichestvo po kategoriyam'); {Вывод на экран}
for i:=1 to n do
begin
write(i,' ',kt[i],' ');
readln(z[i]);
end;
initgraph(x,y,'');{Подключение графического режима}
s:=0;
for i:=1 to n do
s:=s+z[i];
x:=getmaxX div 2; {Начало координат в центре экрана}
y:=getmaxY div 2;
r:=150; {Радиус окружности}
b:=round(360*z[1]/s); {Рисуем круг}
setcolor(9);
setfillstyle(1,9);
pieslice(x,y,0,b,r);
str(100*z[1]/s:0:2,st);
x1:=x+round(r*cos(pi*b/360));{середина сектора по внешней границе для Х}
if x1>=x then x1:=x1+30{правее центра диаграммы}
else x1:=x1-140;{левее}
y1:=y-round(r*sin(pi*b/360));{по Y}
if y1<x then y1:=y1-20{выше}
else y1:=y1+20;{ниже}
outtextXY(x1,y1,kt[1]+' '+ st+' %');
for i:=2 to n-1 do
begin
a:=round(360*z[i]/s)+b;
setcolor(i);
setfillstyle(1,i);
pieslice(x,y,b,a,r);
str(100*z[i]/s:0:2,st);
x1:=x+round(r*cos(pi*(a+b)/360));
if x1>=x then x1:=x1+30
else x1:=x1-140;
y1:=y-round(r*sin(pi*(a+b)/360));
if y1<x then y1:=y1-20
else y1:=y1+20;
outtextXY(x1,y1,kt[i]+'='+st+'%');
b:=a;
end;
setcolor(n);
setfillstyle(1,n);
pieslice(x,y,b,360,r);
str(100*z[n]/s:0:2,st);
x1:=x+round(r*cos(pi*(360+b)/360));
if x1>=x then x1:=x1+30
else x1:=x1-140;
y1:=y-round(r*sin(pi*(360+b)/360));
if y1<x then y1:=y1-20
else y1:=y1+20;
outtextXY(x1,y1,kt[n]+' '+st+'%');
readln;
end.
Для начала, модуля graph в Pascal ABC нет. Вернее, не совсем так - он есть, но по-другому обозначается, а именно - graphabc. Во-вторых, инициализировать графику в Pascal ABC не нужно - эти команды он не поймёт.

Пока такое исправление, чтобы хоть как-то работало:
 uses crt,graphabc; 
const n=4;
{массив названий}
kt:array[1..n] of string=('Otlicniki','Horoshisty','Uspevayushie',
'Neuspevayushie');
var z:array [1..n] of integer; {Задаём массив}
i,x,y,x1,y1,r,a,b,s:integer;
st:string;
begin
clrscr;
writeln('Vvedite kolichestvo po kategoriyam'); {Вывод на экран}
for i:=1 to n do
begin
write(i,' ',kt[i],' ');
readln(z[i]);
end;
s:=0;
for i:=1 to n do
s:=s+z[i];
r:=150; {Радиус окружности}
b:=round(360*z[1]/s); {Рисуем круг}
setpencolor(9);
str(100*z[1]/s:0:2,st);
x1:=x+round(r*cos(pi*b/360));{середина сектора по внешней границе для Х}
if x1>=x then x1:=x1+30{правее центра диаграммы}
else x1:=x1-140;{левее}
y1:=y-round(r*sin(pi*b/360));{по Y}
if y1=x then x1:=x1+30
else x1:=x1-140;
y1:=y-round(r*sin(pi*(a+b)/360));
if y1=x then x1:=x1+30
else x1:=x1-140;
y1:=y-round(r*sin(pi*(360+b)/360));
if y1
О. О.
О. О.
43 559
Лучший ответ
crt и graph - модули turbo pascal'я еще для древнего ms-dos'a.
У авс должны быть свои графические средства. Читай хелп к нему, гугли.
L!
Leoniд !!!
90 063
Лучше делать в PascalABC.
Вот программа, рисующая сектора (отличники. хорошисты. троечники, двоечники).
Остается только раскрасить!!!
uses GraphAbc;
const n = 4; X0 = 320; Y0 =240; R = 150;
var V : array[1 .. n] of integer;
var u, u0, S : integer;

begin
WriteLn (' Сколько в классе отличников? '); ReadLn (V[1]); WriteLn (V[1]);
WriteLn (' Сколько в классе хорошистов? '); ReadLn (V[2]); WriteLn (V[2]);
WriteLn (' Сколько в классе троечников? '); ReadLn (V[3]); WriteLn (V[3]);
WriteLn (' Сколько в классе неуспевающих? '); ReadLn (V[4]); WriteLn (V[4]);
ClearWindow(clSkyBlue);
SetWindowSize (2*X0, 2*Y0); S := 0; u0 := 0;
for var i:=1 to n do S:=S + v[i]; { вычисление суммарной площади }
for var i:=1 to n do
begin
u:=u0 + round(v[i]*360/S)+1;
Pie(X0 , Y0, R, u0, u); { Рисование сектора }
u0:=u;
end;
end.
Виталик Виталик мне бы ещё понимать как раскрасить..
Лучше перейди на язык "посовременней"