Найдите фамилии двух работников с наибольшей зарплатой - PascalABC.NET

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

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

Нужно написать программу. Только не очень мудрено Ведомость на зарплату представлена как две таблицы. Одна содержит фамилии работников цеха, а вторая — их зарплату за текущий месяц. 1)Найдите фамилию работника, зарплата которого наименее отклоняется от средней зарплаты всех работников за текущий месяц. 2)Найдите фамилии двух работников с наибольшей зарплатой. 3)Удалите из ведомости на зарплату сведения о работнике, зарплата которого минимальна. Это всё в одной программе.

Решение задачи: «Найдите фамилии двух работников с наибольшей зарплатой»

textual
Листинг программы
type sotr=record
  fam:string[20];
  zp:real;
end;  
   
var
  a:array of sotr;
  i,j,l,t:integer;
  s:real;
begin
  repeat
    write('введите количество работников(>1):');
    readln(l);
  until l>1;
  SetLength(a,l);
  s:=0.0;
  for i:=0 to l-1 do with a[i] do begin
    writeln('Сотрудник ',i+1); 
    write('Фамилия:');readln(fam);
    write('Зарплата:');readln(zp);
    s:=s+zp;
  end;
  s:=s/l;
  for i:=0 to l-2 do
    for j:=i to l-1 do
      if a[i].zp<a[j].zp then Swap(a[i],a[j]);
     for i:=0 to l-1 do WritelnFormat('{0} - {1}',a[i].fam,a[i].zp);   
     writeln('Средняя зп:',s:0:2);
   write('работник, зарплата которого наименее отклоняется от средней зарплаты всех работников за текущий месяц:');
   t:=0;
   for i:=1 to l-1 do if abs(a[i].zp-s)<abs(a[t].zp-s) then t:=i;
   writeln(a[t].fam);   
   writelnformat('два работников с наибольшей зарплатой: {0} и {1} ', a[0].fam,a[1].fam);
   writelnformat('Удален сотрудник {0} c заработной платой {1}',a[l-1].fam,a[l-1].zp);
   l:=l-1;
   SetLength(a,l);
   for i:=0 to l-1 do WritelnFormat('{0} - {1}',a[i].fam,a[i].zp);
end.

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

В данном коде используется язык программирования PascalABC.Net. Сначала объявляется структура sotr, которая представляет собой запись с полями fam (фамилия работника) и zp (зарплата работника). Затем объявляются следующие переменные:

  • a - массив, который будет содержать несколько структур sotr;
  • i, j, l, t - целочисленные переменные, которые будут использоваться в цикле и для индексации элементов массива a;
  • s - переменная для хранения суммы всех зарплат работников;
  • r - переменная для хранения количества работников. Далее следует блок повторяющегося ввода, который продолжается до тех пор, пока пользователь не введет количество работников больше 1. Затем происходит инициализация массива a заданным количеством работников и обнуление переменной s. Цикл проходит по каждому работнику и выводит его фамилию и зарплату. Значение переменной s увеличивается на значение зарплаты текущего работника. После этого происходит вычисление средней зарплаты и поиск работника, зарплата которого наименее отклоняется от средней зарплаты. Затем выводится фамилия этого работника, две строки для ввода фамилий двух работников с наибольшей зарплатой и сообщение об удалении последнего работника из массива. Код заканчивается выводом всех фамилий и зарплат работников в консоль.

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


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

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

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