Егэ С4. Проверьте эффективность программы - PascalABC.NET

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

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

На вход подаются сведения о клиентах фитнес-центра. В первой строке указывается целое число N, а каждая из последующих N строк имеет формат <Год> <Номер месяца> <Продолжительность занятий (в часах)> <Код клиента> Все данные целочисленные. Значение года лежит в диапазоне от 2000 до 2010, код клиента — в диапазоне 10-99, продолжительность занятий — в диапазоне 1-30. Для каждого клиента, присутствующего в исходных данных, определить суммарную продолжительность занятий в течение всех лет (вначале выводить суммарную продолжительность, затем код клиента). Сведения о каждом клиенте выводить на новой строке и упорядочивать по убыванию суммарной продолжительности, а при их равенстве — по возрастанию кода клиента.

Решение задачи: «Егэ С4. Проверьте эффективность программы»

textual
Листинг программы
type
  OneClient = record
    sumperiod, code: integer;
  end;
 
var
  Skod: Array[10..99] of OneClient;
 
var
  i, j, n, year, m, period, code_client: Integer;
  c: OneClient;
 
begin
  // AssignFile(input, 'd:\temp\fitness.txt');Reset(input);
  
  // чтение
  for i := 10 to 99 do Skod[i].sumperiod := 0;
  Readln(n);
  for i := 1 to N do 
  begin
    Readln(year, m, period, code_client);
    with Skod[code_client] do 
    begin
      sumperiod := sumperiod + period;
      code := code_client
    end;  
  end;
  
  for i := 10 to 98 do {сортируем массив}
    for j := i + 1 to 99 do
      if (Skod[i].sumperiod < Skod[j].sumperiod)
           or ((Skod[i].sumperiod = Skod[j].sumperiod) and (Skod[i].code > Skod[j].code)) then 
      begin
        c := Skod[i];
        Skod[i] := Skod[j];
        Skod[j] := c;
      end;
  
  for i := 10 to 99 do 
    if (Skod[i].sumperiod > 0) then
      Writeln(Skod[i].sumperiod, ' ', Skod[i].code);
end.

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

В данном коде используется язык программирования PascalABC.Net.

  1. Тип данных OneClient объявляет структуру с полями sumperiod и code типа integer.
  2. Переменная Skod объявляет массив из 100 элементов типа OneClient.
  3. Далее, вводятся переменные для цикла и переменная c типа OneClient.
  4. В блоке комментариев // чтение осуществляется попытка чтения из файла 'd:\temp\fitness.txt', но поскольку файл не открыт, этот блок кода просто игнорируется.
  5. Затем, в цикле for происходит заполнение массива Skod нулями.
  6. Цикл for считывает данные из файла, где каждая строка представляет собой 4 числа, разделенных пробелом. Переменные year, m, period и code_client принимают эти числа.
  7. Внутренний блок with обрабатывает данные для конкретного клиента, обновляя поля sumperiod и code в соответствующем элементе массива Skod.
  8. Затем, в цикле for, происходит сортировка массива Skod по убыванию суммы sumperiod и в случае равенства - по коду клиента.
  9. В конце, в цикле for выводятся на экран значения sumperiod и code для каждого элемента массива Skod, если sumperiod больше нуля.

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


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

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

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