На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения - PascalABC.NET

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

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

На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения. В первой строке сообщается количество сотрудников N, каждая из следующих N строк имеет следующий формат: <Фамилия> <Инициалы> <телефон>, где <Фамилия> - строка, состоящая не более чем из 20 символов, <Инициалы> - строка, состоящая не более чем из 4-х символов (буква, точка, буква, точка), <телефон> - семизначный номер, 3-я и 4, я, а также 5-я и 6-я цифры которого разделены символом «-». <Фамилия> и <Инициалы>, а также <Инициалы> и <телефон> разделены одним пробелом. Пример входной строки: Иванов П.С. 555-66-77 Сотрудники одного подразделения имеют один и тот же номер телефона. Номера телефонов в учреждении отличаются только двумя последними цифрами. Требуется написать как можно более эффективную программу, которая будет выводить на экран информацию, сколько в среднем сотрудников работает в одном подразделении данного учреждения. Если можно преобразовать программу ниже под Pascal ABC.Net:
Листинг программы
  1. var
  2. c: set of byte;
  3. n, i, k, j, l: byte;
  4. b: char;
  5. begin
  6. assign (input, 'input.txt'); reset (input);
  7. assign (output, 'output.txt'); rewrite (output);
  8. readln (n); {количество сотрудников}
  9. k:=0; {счетчик подразделений}
  10. c:=[ ]; {множество для хранения номеров подразделений}
  11. for i:=1 to n do
  12. begin
  13. j:=0;
  14. while j<>2 do
  15. begin
  16. read (b);
  17. if b='-' then j:=j+1;
  18. end;
  19. readln (l); {считываем номер подразделения}
  20. if not (l in c) {если он еще не встречался}
  21. then
  22. begin
  23. k:=k+1; {прибавляем единицу к счетчику}
  24. c:=c+[l]; {помещаем номер подразделения во множество}
  25. end;
  26. end;
  27. writeln (n/k:5:3); {находим среднее количество сотрудников в подразделении}
  28. close (input);
  29. close (output);
  30. end.

Решение задачи: «На вход программе подаются сведения о телефонах всех сотрудников некоторого учреждения»

textual
Листинг программы
  1. var
  2.   c: set of byte;
  3.   n, i, k, j, l: byte;
  4.   b: char;
  5.   input, output: text;
  6. begin
  7.  assign (input, 'input.txt'); reset (input);
  8.  assign (output, 'output.txt'); rewrite (output);
  9.  readln (input,n);    {количество сотрудников}
  10.  k:=0;    {счетчик подразделений}
  11.  c:=[ ];    {множество для хранения номеров подразделений}
  12.  for i:=1 to n do
  13.     begin
  14.      j:=0;
  15.      while j<>2 do
  16.         begin
  17.          read (input,b);
  18.          if b='-' then j:=j+1;
  19.         end;
  20.      readln (input,l); {считываем номер подразделения}
  21.      if not (l in c) {если он еще не встречался}
  22.         then
  23.          begin
  24.             k:=k+1; {прибавляем единицу к счетчику}
  25.             c:=c+[l]; {помещаем номер подразделения во множество}
  26.          end;
  27.      end;
  28.  writeln (n/k:5:3); {находим среднее количество сотрудников в подразделении}
  29.  close (input);
  30.  close (output);
  31. 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

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

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

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