На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения - 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.

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

  1. Ввод данных с помощью файла input.txt, вывод результатов в файл output.txt.
  2. Считывание количества сотрудников (n).
  3. Инициализация счетчика подразделений (k) и множества для хранения номеров подразделений (c).
  4. Обход сотрудников (для каждого сотрудника): а) Счетчик подразделения (j) инициализируется нулем. б) Пока не встретится символ -, считывается символ (b) и увеличивается счетчик подразделения (j). в) Считывается номер подразделения (l). г) Если номер подразделения еще не встречался (l не принадлежит множеству c), то:
    • Увеличивается счетчик подразделения (k).
    • Номер подразделения добавляется в множество (c).
  5. Выводится среднее количество сотрудников в подразделении (n/k) с шагом 5 знаков после запятой.
  6. Файлы закрываются.

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


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

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

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