Среди работников данного предприятия найти тех,чья заработная плата за месяц ниже среднего по предприятию

Среди работников данного предприятия найти тех,чья заработная плата за месяц ниже среднего по предприятию,а также распечатать список тех,кто проработал на предприятии более 10 лет,с указанием их фамилии,зарплаты,стажа работы и должности.
9 ответов

uses crt;
type rabot=record
           fam:string[20];
           dlz:string[20];
           zpl:longint;
           stz:byte;
           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
 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.


И это все?


Ну если мало, то еще допишите...А Вы случайно не с телефона, код весь видите?


уже с компьютера) увидел всё, спасибо за помощьPuporev, как бы мне так с вами связаться для объяснения. ну просто кратенько пробежаться по программе. чтобы хоть минимально вникнуть в суть составления такой программы.


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.


я это увидел))) мне бы поговорить


Поговорить не могу, задавайте вопросы в теме.


А как решить задачу с помощью указателей?)


сможете мне объяснить?