• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Массив записей.(Информация по студентам)

  • Автор темы Автор темы Gerald
  • Дата начала Дата начала

Gerald

Новые
Регистрация
26 Мар 2011
Сообщения
25
Реакции
0
Баллы
0
Массив записей.(Информация по студентам)

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: А с этой я уже почти месяц мучаюсь...
 
а в чем, собственно, проблема? анализируйте содержимое всех элементов массива группы и подсчитывайте количество заполненных значениями, так вы узнаете необходимые вам параметры.
 
Ну скажем количе-во групп на каждом курсе я так найду. А что с количе-вом студентов получается - проходить по всему файлу, и искать совпадения??? тогда это будет мало чем отличаться от того варианта что я сделал в самом начале - он не примет. Он сказал что как то по максимуму второго массива (array of array of...) я найду количе-во студентов для каждой группы... - это я вообще не могу понять как...
 
Назад
Сверху