Из текстового файла input.txt с данными вывести информацию в файл output.txt по заданному условию - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Дан текстовый файл input.txt содержащий в первой строке кол-во данных, в каждой следующей чередующиеся данные: фамилии и оценки за 3 экзамена. Например: 4 Иванов 8 8 7 Петров 5 6 7 Сидоров 4 7 6 Севко 4 5 4 Вывести в отдельный файл output.txt в алфавитном порядке возрастания среднего балла, фамилии и средний балл студентов.

Решение задачи: «Из текстового файла input.txt с данными вывести информацию в файл output.txt по заданному условию»

textual
Листинг программы
type
  tStud = record
    Name : String[10];
    A, B, C : Integer;
    Sr : Real;
  end;
  
begin
  var F := OpenRead('input.txt');
  var count := F.ReadLnInteger;
  WriteLn('Количество сведений: ', count);
  var a : array of tStud;
  SetLength(a, count);
  for var i := 0 to count-1 do
    begin
      a[i].Name := F.ReadLnString;
      a[i].A := F.ReadInteger;
      a[i].B := F.ReadInteger;
      a[i].C := F.ReadLnInteger;
      a[i].Sr := (a[i].A + a[i].B + a[i].C) / 3;
      WriteLnFormat('{0}) {1}: {2} {3} {4} <{5:0.00}>', i+1, a[i].Name, a[i].A, a[i].B, a[i].C, a[i].Sr);
    end;
  F.Close;
  
  var swaps : Boolean;
  repeat
    swaps := False;
    for var i := 0 to count-2 do
      if a[i].Name > a[i+1].Name then
        begin
          Swap(a[i], a[i+1]);
          swaps := True;
        end
      else if (a[i].Name = a[i+1].Name) and (a[i].Sr > a[i+1].Sr) then
        begin
          Swap(a[i], a[i+1]);
          swaps := True;
        end
  until Not swaps;
  
  var O := OpenWrite('output.txt');
  foreach var S : tStud in a do
    O.WriteLn(S.Name, #32, S.Sr);
  O.Close;
end.

Объяснение кода листинга программы

  1. Открывается файл input.txt для чтения.
  2. Считывается количество строк в файле.
  3. Создается массив a типа tStud, который будет содержать информацию о студентах.
  4. Устанавливается длина массива a равной количеству строк в файле.
  5. В цикле считываются данные о каждом студенте и записываются в массив a.
  6. Вычисляется средний балл (Sr) для каждого студента.
  7. Выводится информация о каждом студенте в формате: номер) Имя: A B C .
  8. Открывается файл output.txt для записи.
  9. В цикле записываются данные о каждом студенте в файл output.txt.
  10. Файл output.txt закрывается.
  11. В цикле выполняется сортировка массива a по имени и среднему баллу (Sr).
  12. Пока есть строки, которые необходимо отсортировать, выполняется обмен значениями между соседними элементами массива a.
  13. Цикл повторяется до тех пор, пока массив a не будет отсортирован.
  14. Закрывается файл output.txt.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы