Вопрос: Среди работников данного предприятия найти тех, чья заработная плата за месяц ниже средней по предприятию, а также распечатать список тех, кто проработал на предприятии более 10 лет с указанием их фамилии, зарплаты, стажа работы и должности.
Категория: школьный раздел
Ответы:
uses crt;
type rabot=record  //объявляем тип-запись с полями по условию
           fam:string[20]; //фамилия-строка до 20 символов
           dlz:string[20]; //должность, тот же тип
           zpl:longint;//зарплата - длинное целое
           stz:byte; //стаж - числа от 0 до 255
           end;
var sp:array[1..50] of rabot; //массив записей
    n,i,k:integer;
    sr:real;
begin
clrscr;
write('Введите количество работников:');
readln(n);
writeln('Введите данные о работниках:');
sr:=0;
for i:=1 to n do
 begin
  writeln('Работник ',i);
  with sp[i] do
   begin
    write('Фамилия: ');readln(fam);
    write('Должность: ');readln(dlz);
    write('Зарплата: ');readln(zpl);
    sr:=sr+zpl;
    write('Стаж: ');readln(stz)
   end;
 end;
sr:=sr/n; //средняя зарплата
clrscr; //очистим экран от ввода
writeln('Данные о работниках:');//выведем список в виде таблицы
writeln('------------------------------------------------------');
writeln('|    Фамилия    |     Должность    | Зарплата | Стаж |');
writeln('------------------------------------------------------');
for i:=1 to n do
with sp[i] do
 begin
  gotoXY(1,whereY);write('| ',fam);//установим курсор в нужную позицию и выведем
  gotoXY(17,whereY);write('| ',dlz);
  gotoXY(36,whereY);write('|',zpl:8);
  gotoXY(47,whereY);write('|',stz:4);
  gotoXY(54,whereY);writeln('|');//конец строки, переход на новую
 end;
writeln('------------------------------------------------------');
writeln('Press Enter');
readln;
clrscr;//очистим экран
writeln('Средняя зарплата по предприятию=',sr:0:1);//новая таблица
writeln('Данные о работниках, чья зарплата ниже средней:');
writeln('------------------------------------------------------');
writeln('|    Фамилия    |     Должность    | Зарплата | Стаж |');
writeln('------------------------------------------------------');
for i:=1 to n do
if sp[i].zpl<sr then //если зарплата меньше средней, выводим
with sp[i] do
 begin
  gotoXY(1,whereY);write('| ',fam);
  gotoXY(17,whereY);write('| ',dlz);
  gotoXY(36,whereY);write('|',zpl:8);
  gotoXY(47,whereY);write('|',stz:4);
  gotoXY(54,whereY);writeln('|');
 end;
writeln('------------------------------------------------------');
writeln('Press Enter');
readln;
clrscr;  //очистим
writeln('Данные о работниках, чей стаж ,более 10 лет:');//новая таблица
k:=0;
writeln('------------------------------------------------------');
writeln('|    Фамилия    |     Должность    | Зарплата | Стаж |');
writeln('------------------------------------------------------');
for i:=1 to n do
if sp[i].stz>10 then //если стаж бодьше 10 лет
 begin
  k:=1; //фиксируем что есть
  with sp[i] do //выводим
   begin
    gotoXY(1,whereY);write('| ',fam);
    gotoXY(17,whereY);write('| ',dlz);
    gotoXY(36,whereY);write('|',zpl:8);
    gotoXY(47,whereY);write('|',stz:4);
    gotoXY(54,whereY);writeln('|');
   end;
  end;
writeln('------------------------------------------------------');
if k=0 then write('Таких работников нет');
writeln('Press Enter');
readln
end.