Найдите фамилии двух работников с наибольшей зарплатой - 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
увеличивается на значение зарплаты текущего работника. После этого происходит вычисление средней зарплаты и поиск работника, зарплата которого наименее отклоняется от средней зарплаты. Затем выводится фамилия этого работника, две строки для ввода фамилий двух работников с наибольшей зарплатой и сообщение об удалении последнего работника из массива. Код заканчивается выводом всех фамилий и зарплат работников в консоль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д