Массив записей.(Информация по студентам)
Delphi...
В типизированном файле хранится информация о студентах
(Записи TStud). Необходимо вывести группы, средний балл которых меньше факультетского среднего.
Вначале я использовал двухмерный динамический массив, для хранения средн. баллов групп( курс1 группа2 - A[1,2]). Мне сказали что это оч. сложно,( действительно процедуры получались довольно громоздкие, кроме того необходимо было проверять в массиве каждую группу на существование, т.к. за ранее неизвестно количе-ва студентов, групп, и даже курсов может быть столько сколько введут)
Препод мне намекнул на вариант по-проще: так же использовать многомерный массив, но уже записей:суммы(средн. баллов студентов соответствующей группы), и ID группы. Что я и сделал однако мало что понял:
ТОлько вот что дальше? Ну есть у меня суммы ср. баллов для каждой группы, пронумеровал каждую группу, знаю количество всех групп... Но как мне теперь найти ср. балл для каждой группы, не зная количе-ва студентов в ней (ведь в каждой группе оно разное). ТОже-самое: что мне до количе-ва всех групп, если мне необходимо количе-во групп в отдельности для каждого курса - чтобы потом находить средн. факультетское???
Люди помогите пожалста, ведь без всех сданных задач мне зачета не видать :tehnari_ru_121: А с этой я уже почти месяц мучаюсь...
Delphi...
В типизированном файле хранится информация о студентах
(Записи TStud). Необходимо вывести группы, средний балл которых меньше факультетского среднего.
Вначале я использовал двухмерный динамический массив, для хранения средн. баллов групп( курс1 группа2 - A[1,2]). Мне сказали что это оч. сложно,( действительно процедуры получались довольно громоздкие, кроме того необходимо было проверять в массиве каждую группу на существование, т.к. за ранее неизвестно количе-ва студентов, групп, и даже курсов может быть столько сколько введут)
Препод мне намекнул на вариант по-проще: так же использовать многомерный массив, но уже записей:суммы(средн. баллов студентов соответствующей группы), и ID группы. Что я и сделал однако мало что понял:
HTML:
const N=10;
type
bal=array [1..10] of real;
TStud=record //Информация по студентам
FIO: string [80];
Year: TDateTime;
MedB: bal;
Kurs: byte;
Group: byte;
end;
TGroup = record //... - то что ПОСОВЕТОВАЛИ...
Sum:real; //сумма сред. баллов студентов
ID:byte;
end;
fil = file of TStud;
arr = array of array of TGroup; //многомерный массив записей
var
maxK,maxG:integer; // максимальный курс и макс. группа(для задания длины массива) это я нахожу в др. юните
countGr:integer; //коли-во групп
f: fil;
s: TStud;
ArrGr:arr;
function GPAstud(s:Tstud):real;
procedure GPAgr;
procedure ResetArray;
implementation
uses DeleteST, ChangeST, AddST, Main_Form, SearchGR;
procedure GPAgr;
begin
ResetArray;
CountGr:=0;
reset(f);
while not(eof(f)) do
begin
read(f,s); //читаем
with ArrGr[s.Kurs,s.Group] do begin
Sum := Sum + GPAstud(s); //Добавляем ср. балл студента в общую сумму группы
if ID=0 then begin;
inc(countGr);
ID:=countGr; //добавл АЙди новой группы
end;
end;
end;
Closefile(f);
end;
procedure ResetArray; //обнуляем записи массива
var i,j:integer;
begin
for i:=1 to maxK do
for j:=1 to maxG do
with ArrGr[i,j] do begin
ID:=0;
Sum:=0;
end;
end;
function GPAstud(s:Tstud):real; //Средний балл студента по оценкам
var
k:integer;
sum:real;
begin
sum:=0;
for k := 1 to N do
sum:=sum+s.MedB[k];
result:=sum/N;
end;
Люди помогите пожалста, ведь без всех сданных задач мне зачета не видать :tehnari_ru_121: А с этой я уже почти месяц мучаюсь...