Function CountCoordinateForY(sm:ArrayMarks; i:integer):integer;
var y:integer;
begin
Y:=sm[i];
if Y<>0 then
CountCoordinateForY:=GetMaxY-round(200/Y)
else CountCoordinateForY:=0;
end;
Procedure ChartOfMarks (Magazine:Tjournal; sm:ArrayMarks; mark:byte; X,Y:integer);
var driver,mode,Err,i:integer;
begin
clrscr;
driver:=detect;
InitGraph(driver,mode,'C:\BGI');
Err:=GraphResult;
if Err<>grOK then
writeln('Ошибка при инициализации графического режима')
else
begin
for i:=1 to 4 do
sm[i]:=0;
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=2 then
sm[1]:=sm[1]+1
else if Magazine.Students.Items[i].Mark=3 then
sm[2]:=sm[2]+1
else if Magazine.Students.Items[i].Mark=4 then
sm[3]:=sm[3]+1
else if Magazine.Students.Items[i].Mark=5 then
sm[4]:=sm[4]+1;
SetFillStyle(8,Red);
Bar3D(0,GetMaxY,150,CountCoordinateForY(sm,1),0,TopOn);
SetFillStyle(8,Yellow);
Bar3D(150,GetMaxY,600,CountCoordinateForY(sm,2),0,TopOn);
SetFillStyle(8,Blue);
Bar3D(300,GetMaxY,450,CountCoordinateForY(sm,3),0,TopOn);
SetFillStyle(8,Green);
Bar3D(450,GetMaxY,600,CountCoordinateForY(sm,4),0,TopOn);
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=mark then
OutTextXY(X,Y,Magazine.Students.Items[i].name);
end;
end;
var j:TJournal;
sm:ArrayMarks;
begin
clrscr;
InputJournal(j);
OutputRegister(5,j);
OutputRegister(4,j);
OutputRegister(3,j);
OutputRegister(2,j);
ChartOfMarks(j,sm,2,75,100);
ChartOfMarks(j,sm,3,225,100);
ChartOfMarks(j,sm,4,300,100);
ChartOfMarks(j,sm,5,375,100);
readln;
end.
Function CountCoordinateForY (Magazine:TJournal; sm:ArrayMarks; i:integer):integer;
var y:integer;
begin
Y:=sm[i];
if Y<>0 then
CountCoordinateForY:=GetMaxY-round(200*Y/Magazine.Students.Count)
else CountCoordinateForY:=0;
end;
Procedure ChartOfMarks (Magazine:Tjournal; sm:ArrayMarks; X,Y:integer);
var driver,mode,Err,i:integer;
k,m:integer;
begin
clrscr;
driver:=detect;
InitGraph(driver,mode,'C:\BGI');
Err:=GraphResult;
if Err<>grOK then
writeln('Ошибка при инициализации графического режима')
else
begin
for i:=1 to 4 do
sm[i]:=0;
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=2 then
sm[1]:=sm[1]+1
else if Magazine.Students.Items[i].Mark=3 then
sm[2]:=sm[2]+1
else if Magazine.Students.Items[i].Mark=4 then
sm[3]:=sm[3]+1
else if Magazine.Students.Items[i].Mark=5 then
sm[4]:=sm[4]+1;
SetFillStyle(8,Red);
Bar(0,GetMaxY,150,CountCoordinateForY(Magazine,sm,1));
SetFillStyle(8,Yellow);
Bar(150,GetMaxY,300,CountCoordinateForY(Magazine,sm,2));
SetFillStyle(8,Blue);
Bar(300,GetMaxY,450,CountCoordinateForY(Magazine,sm,3));
SetFillStyle(8,Green);
Bar(450,GetMaxY,600,CountCoordinateForY(Magazine,sm,4));
m:=0;
for k:=2 to 5 do
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=k then
begin
OutTextXY(X+(k-2)*150,Y+10*m,Magazine.Students.Items[i].name);
inc(m);
end;
SetTextStyle(5,0,5);
OutTextXY(75,20,'2');
OutTextXY(225,20,'3');
OutTextXY(375,20,'4');
OutTextXY(525,20,'5');
end;
end;
var j:TJournal;
sm:ArrayMarks;
begin
clrscr;
InputJournal(j);
OutputStudentsWithMarks(5,j);
OutputStudentsWithMarks(4,j);
OutputStudentsWithMarks(3,j);
OutputStudentsWithMarks(2,j);
ChartOfMarks(j,sm,75,100);
ChartOfMarks(j,sm,225,100);
ChartOfMarks(j,sm,300,100);
ChartOfMarks(j,sm,375,100);
readln;
end.
uses CRT,Graph;
const MaxNumberOfStudents=99;
type TStudent=record
Name:string[25];
Mark:2..5;
end;
TListOfStudents=record
Items:array[1..MaxNumberOfStudents] of TStudent;
Count:integer;
end;
TJournal=record
Group:string[6];
Students:TListOfStudents;
end;
type ArrayMarks=array[1..4] of integer;
Procedure InputStudent(var s:TStudent);
begin
write(' Ученик: ');
readln(s.Name);
write(' Оценка: ');
readln(s.Mark);
end;
Procedure InputListOfStudents(var j:TListOfStudents);
var i:integer;
begin
write('Введите число учеников: ');
readln(j.Count);
writeln('Список учеников и оценок:');
for i:=1 to j.Count do
begin
write('№',i );
InputStudent(j.Items[i]);
end;
clrscr;
end;
Procedure InputJournal(var j:TJournal);
begin
write('Класс: ');
readln(j.Group);
InputListOfStudents(j.Students);
end;
Procedure OutputRegister(mark:byte; Magazine:TJournal);
var i:integer;
begin
writeln(' Класс - ',Magazine.Group);
writeln('Оценка ученика - (',mark,'):');
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=mark then
writeln(Magazine.Students.Items[i].name);
readln;
end;
Function CountCoordinateForY (Magazine:TJournal; sm:ArrayMarks; i:integer):integer;
var y:integer;
begin
Y:=sm[i];
{ if Y<>0 then}
CountCoordinateForY:=GetMaxY-round(200*Y/Magazine.Students.Count)
{ else CountCoordinateForY:=0;}
end;
Procedure ChartOfMarks (Magazine:Tjournal; sm:ArrayMarks; X,Y:integer);
var driver,mode,Err,i:integer;
k,m:integer;
begin
clrscr;
driver:=detect;
InitGraph(driver,mode,'C:\BGI');
Err:=GraphResult;
if Err<>grOK then
writeln('Ошибка при инициализации графического режима')
else
begin
for i:=1 to 4 do
sm[i]:=0;
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=2 then
sm[1]:=sm[1]+1
else if Magazine.Students.Items[i].Mark=3 then
sm[2]:=sm[2]+1
else if Magazine.Students.Items[i].Mark=4 then
sm[3]:=sm[3]+1
else if Magazine.Students.Items[i].Mark=5 then
sm[4]:=sm[4]+1;
SetFillStyle(8,Red);
Bar(0,GetMaxY,150,CountCoordinateForY(Magazine,sm,1));
SetFillStyle(8,Yellow);
Bar(150,GetMaxY,300,CountCoordinateForY(Magazine,sm,2));
SetFillStyle(8,Blue);
Bar(300,GetMaxY,450,CountCoordinateForY(Magazine,sm,3));
SetFillStyle(8,Green);
Bar(450,GetMaxY,600,CountCoordinateForY(Magazine,sm,4));
m:=0;
for k:=2 to 5 do
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=k then
begin
OutTextXY(X+(k-2)*150,Y+10*m,Magazine.Students.Items[i].name);
inc(m);
end;
SetTextStyle(5,0,5);
OutTextXY(75,20,'2');
OutTextXY(225,20,'3');
OutTextXY(375,20,'4');
OutTextXY(525,20,'5');
end;
end;
var j:TJournal;
sm:ArrayMarks;
begin
clrscr;
InputJournal(j);
{ OutputStudentsWithMarks(5,j);
OutputStudentsWithMarks(4,j);
OutputStudentsWithMarks(3,j);
OutputStudentsWithMarks(2,j);}
ChartOfMarks(j,sm,75,100);
ChartOfMarks(j,sm,225,100);
ChartOfMarks(j,sm,300,100);
ChartOfMarks(j,sm,375,100);
readln;
end.
uses CRT,Graph;
const MaxNumberOfStudents=99;
type TStudent=record
Name:string[25];
Mark:2..5;
end;
TListOfStudents=record
Items:array[1..MaxNumberOfStudents] of TStudent;
Count:integer;
end;
TJournal=record
Group:string[6];
Students:TListOfStudents;
end;
type ArrayMarks=array[1..4] of integer;
Procedure InputStudent (var s:TStudent);
begin
write(' Ученик: ');
readln(s.Name);
write(' Оценка: ');
readln(s.Mark);
end;
Procedure InputListOfStudents (var j:TListOfStudents);
var i:integer;
begin
write('Введите число учеников: ');
readln(j.Count);
writeln('Список учеников и оценок:');
for i:=1 to j.Count do
begin
write('№',i );
InputStudent(j.Items[i]);
end;
clrscr;
end;
Procedure InputJournal (var j:TJournal);
begin
write('Класс: ');
readln(j.Group);
InputListOfStudents (j.Students);
end;
Procedure OutputStudentsWithMarks(mark:byte; Magazine:TJournal);
var i:integer;
begin
writeln(' Класс - ',Magazine.Group);
writeln('Оценка ученика - (',mark,'):');
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=mark then
writeln(Magazine.Students.Items[i].name);
readln;
end;
Function CountCoordinateForY(Magazine:TJournal; sm:ArrayMarks; i:integer):integer;
var y:integer;
begin
Y:=sm[i];
CountCoordinateForY:=GetMaxY-round(200*Y/Magazine.Students.Count);
end;
Procedure OutputToChartOfMarksNames(Magazine:TJournal);
var m,k,X,Y,i:integer;
begin
for k:=2 to 5 do
begin
m:=0;
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=k then
begin
OutTextXY(X+(k-2)*150,GetMaxY-(Y+10*m),Magazine.Students.Items[i].name);
inc(m);
end;
end;
end;
Procedure CountMarks(var sm:ArrayMarks; Magazine:TJournal);
var i:integer;
begin
for i:=1 to 4 do
sm[i]:=0;
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=2 then
sm[1]:=sm[1]+1
else if Magazine.Students.Items[i].Mark=3 then
sm[2]:=sm[2]+1
else if Magazine.Students.Items[i].Mark=4 then
sm[3]:=sm[3]+1
else if Magazine.Students.Items[i].Mark=5 then
sm[4]:=sm[4]+1;
end;
Procedure ChartOfMarks (Magazine:Tjournal; X,Y:integer);
var driver,mode,Err,i:integer;
k,m:integer;
sm:ArrayMarks;
begin
clrscr;
driver:=detect;
InitGraph(driver,mode,'C:\BGI');
Err:=GraphResult;
if Err<>grOK then
writeln('Ошибка при инициализации графического режима')
else
begin
CountMarks(sm,Magazine);
SetFillStyle(8,Red);
Bar(0,GetMaxY,150,CountCoordinateForY(Magazine,sm,1));
SetFillStyle(8,Yellow);
Bar(150,GetMaxY,300,CountCoordinateForY(Magazine,sm,2));
SetFillStyle(8,Blue);
Bar(300,GetMaxY,450,CountCoordinateForY(Magazine,sm,3));
SetFillStyle(8,Green);
Bar(450,GetMaxY,600,CountCoordinateForY(Magazine,sm,4));
OutputToChartOfMarksNames(Magazine);
SetTextStyle(5,0,5);
OutTextXY(75,20,'2');
OutTextXY(225,20,'3');
OutTextXY(375,20,'4');
OutTextXY(525,20,'5');
end;
end;
var j:TJournal;
begin
clrscr;
InputJournal(j);
OutputStudentsWithMarks(5,j);
OutputStudentsWithMarks(4,j);
OutputStudentsWithMarks(3,j);
OutputStudentsWithMarks(2,j);
ChartOfMarks(j,75,100);
readln;
end.
Procedure CountMarks(var sm:ArrayMarks; Magazine:TJournal);
var i:integer;
begin
for i:=1 to 4 do
sm[i]:=0;
for i:=1 to Magazine.Students.Count do
if Magazine.Students.Items[i].Mark=2 then
sm[1]:=sm[1]+1
else if Magazine.Students.Items[i].Mark=3 then
sm[2]:=sm[2]+1
else if Magazine.Students.Items[i].Mark=4 then
sm[3]:=sm[3]+1
else if Magazine.Students.Items[i].Mark=5 then
sm[4]:=sm[4]+1;
end;
Procedure CountMarks(var sm:ArrayMarks; Magazine:TJournal);
var i:integer;
begin
for i:=1 to 4 do
sm[i]:=0;
for i:=1 to Magazine.Students.Count do
inc(sm[Magazine.Students.Items[i].Mark-1]);
end;
Function CountCoordinateForY(Magazine:TJournal; sm:ArrayMarks; i:integer):integer;
var y:integer;
begin
Y:=sm[i];
CountCoordinateForY:=GetMaxY-round(200*Y/Magazine.Students.Count);
end;
Function CountCoordinateForY(Magazine:TJournal; sm:ArrayMarks; i:integer):integer;
begin
CountCoordinateForY:=GetMaxY-round(200*sm[i]/Magazine.Students.Count);
end;
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.