На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения - PascalABC.NET
Формулировка задачи:
На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения. В первой строке сообщается количество сотрудников N, каждая из следующих N строк имеет следующий формат: <Фамилия> <Инициалы> <телефон>, где <Фамилия> - строка, состоящая не более чем из 20 символов, <Инициалы> - строка, состоящая не более чем из 4-х символов (буква, точка, буква, точка), <телефон> - семизначный номер, 3-я и 4, я, а также 5-я и 6-я цифры которого разделены символом «-». <Фамилия> и <Инициалы>, а также <Инициалы> и <телефон> разделены одним пробелом. Пример входной строки:
Иванов П.С. 555-66-77
Сотрудники одного подразделения имеют один и тот же номер телефона. Номера телефонов в учреждении отличаются только двумя последними цифрами.
Требуется написать как можно более эффективную программу, которая будет выводить на экран информацию, сколько в среднем сотрудников работает в одном подразделении данного учреждения.
Если можно преобразовать программу ниже под Pascal ABC.Net:
Решение задачи: «На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения»
textual
Листинг программы
var c: set of byte; n, i, k, j, l: byte; b: char; input, output: text; begin assign (input, 'input.txt'); reset (input); assign (output, 'output.txt'); rewrite (output); readln (input,n); {количество сотрудников} k:=0; {счетчик подразделений} c:=[ ]; {множество для хранения номеров подразделений} for i:=1 to n do begin j:=0; while j<>2 do begin read (input,b); if b='-' then j:=j+1; end; readln (input,l); {считываем номер подразделения} if not (l in c) {если он еще не встречался} then begin k:=k+1; {прибавляем единицу к счетчику} c:=c+[l]; {помещаем номер подразделения во множество} end; end; writeln (n/k:5:3); {находим среднее количество сотрудников в подразделении} close (input); close (output); end.
Объяснение кода листинга программы
- Ввод данных с помощью файла input.txt, вывод результатов в файл output.txt.
- Считывание количества сотрудников (n).
- Инициализация счетчика подразделений (k) и множества для хранения номеров подразделений (c).
- Обход сотрудников (для каждого сотрудника):
а) Счетчик подразделения (j) инициализируется нулем.
б) Пока не встретится символ
-
, считывается символ (b) и увеличивается счетчик подразделения (j). в) Считывается номер подразделения (l). г) Если номер подразделения еще не встречался (l не принадлежит множеству c), то:- Увеличивается счетчик подразделения (k).
- Номер подразделения добавляется в множество (c).
- Выводится среднее количество сотрудников в подразделении (n/k) с шагом 5 знаков после запятой.
- Файлы закрываются.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д