Из текстового файла 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
Листинг программы
  1. type
  2.   tStud = record
  3.     Name : String[10];
  4.     A, B, C : Integer;
  5.     Sr : Real;
  6.   end;
  7.  
  8. begin
  9.   var F := OpenRead('input.txt');
  10.   var count := F.ReadLnInteger;
  11.   WriteLn('Количество сведений: ', count);
  12.   var a : array of tStud;
  13.   SetLength(a, count);
  14.   for var i := 0 to count-1 do
  15.     begin
  16.       a[i].Name := F.ReadLnString;
  17.       a[i].A := F.ReadInteger;
  18.       a[i].B := F.ReadInteger;
  19.       a[i].C := F.ReadLnInteger;
  20.       a[i].Sr := (a[i].A + a[i].B + a[i].C) / 3;
  21.       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);
  22.     end;
  23.   F.Close;
  24.  
  25.   var swaps : Boolean;
  26.   repeat
  27.     swaps := False;
  28.     for var i := 0 to count-2 do
  29.       if a[i].Name > a[i+1].Name then
  30.         begin
  31.           Swap(a[i], a[i+1]);
  32.           swaps := True;
  33.         end
  34.       else if (a[i].Name = a[i+1].Name) and (a[i].Sr > a[i+1].Sr) then
  35.         begin
  36.           Swap(a[i], a[i+1]);
  37.           swaps := True;
  38.         end
  39.   until Not swaps;
  40.  
  41.   var O := OpenWrite('output.txt');
  42.   foreach var S : tStud in a do
  43.     O.WriteLn(S.Name, #32, S.Sr);
  44.   O.Close;
  45. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы