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