Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        массив записей, текстовый файл
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Одна страница
Модераторы: paradise, KMA
  

alexalisa


Новичок

Есть задача. Сведения об участниках конкурса содержат следующую информацию: фамилия, имя, адрес(город, улица, № дома, № квартиры), секция, набранный балл. Составить программу, которая считывает эти данные из текстового файла в массив записей (не менее 20-ти элементов). Составить процедуры и/или функции, которые позволяют: 1) найти средний балл по каждой секции 2) определить фамилии победителей по каждой секции 3) по каждому из городов определить фамилии участников, набравших наибольшие баллы (независимо от секции).  
Процедура считывания из текстового файла в массив записей я сделала, но процедура вывода работает не совсем верно, выводит только фамилии в строке записи.
1) Как вывести все значения в строке записи, и все записи?
2) Процедуру определения среднего значения по каждой секции я практически выполнила, но она тоже работает не совсем верно, думаю потому что процедура вывода подводит. процедура находит количество различных секций, мне теперь нужно вычислить средний балл по каждой секции.
Очень нужна ваша помощь.
________________________________________
program p;
uses crt;
const n = 45;
type
  T_address=record
       gorod:string[11];
       ulica:string[11];
       dom:string[4];
       kv:string[4];
   end;
  T_conkurs= record
       fam: string[10];
       name: string[11];
       address: T_address;
       cekciya: string[9];
       ball:string[4];
 end;
var   inf:array[1..n] of T_conkurs;
     kol_zap:word;
     i, j, num:integer;

procedure Dannye_vvod;// процедура считывания из текстового файла
 var f:text;
 begin
     i := 0;
     assign(f,'anketa.txt');
     reset(f);
     while not Eof(f) do
           begin
           i := i + 1;
           with inf do
           readln(f,fam,name,address.gorod,address.ulica,address.dom,address.kv,cekciya,ball);
           end;
     kol_zap:=i;
     close(f);
 end;

procedure Dannye_vyvod; //процедура вывода на экран
 var i:integer;
 begin
 writeln(' Фамилия   Имя    Адрес                Секция         Набранный балл');
 for i:=1 to kol_zap do
     begin
     with inf do  begin
     writeln(fam);
     write(name);
     write(address.gorod);
     write(address.ulica);
     write(address.dom);
     write(address.kv);
     write(cekciya);
     write(ball);
     ///writeln(' ',,,,,,,,);
      // writeln(' ',fam,name,address.gorod,address.ulica,address.dom,address.kv,cekciya,ball);
     end; end;
 end;

procedure Sred_bal;
    begin
    for i := 1 to kol_zap - 1 do
    for j := i + 1 to kol_zap do
      if (inf.cekciya = inf[j].cekciya) then inf.cekciya := 'duplicate';
      writeln('Результат:');

    for i := 1 to kol_zap do
    if inf.cekciya <> 'duplicate' then inc(num);
       writeln('В массиве ',num,' различных записей:');

    for i := 1 to kol_zap do
    if inf.cekciya <> 'duplicate' then write(inf.cekciya,' ');

    end;

begin
    clrscr;
    Dannye_vvod;
    Dannye_vyvod;
    Sred_bal;
end.

Всего сообщений: 1 | Присоединился: май 2011 | Отправлено: 20 мая 2011 23:15 | IP

Отправка ответа:
Имя пользователя   Вы зарегистрировались?
Пароль   Забыли пароль?
Сообщение

Использование HTML запрещено

Использование IkonCode разрешено

Смайлики разрешены

Опции отправки

Добавить подпись?
Получать ответы по e-mail?
Разрешить смайлики в этом сообщении?
Просмотреть сообщение перед отправкой? Да   Нет
 

Переход к теме
<< Назад Вперед >>
Одна страница

Форум работает на скрипте © Ikonboard.com