• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите пожалуйста срочно решить задачу, подробно

Красивая

Ученик
Регистрация
23 Май 2011
Сообщения
1
Реакции
0
Баллы
0
Помогите пожалуйста срочно решить задачу, подробно

На вход программе подаются сведения о сотрудниках некоторой фирмы. В первой строке сообщается количество сотрудников N, которое не больше 20, но не меньше 100, каждая из следующих строк имеет следующий формат: "Фамилия" "Имя" "Отчество" "Пол" "Зарплата".
"Фамилия" "Имя" "Отчество" "Пол" "Зарплата" разделены одним пробелом.
Требуется написать программу, которая будет выводить на экран среднюю зарплату, фамилию, инициалы и зарплату сотрудников мужчин, имеющих зарплату выше средней, а так же их количество. Алфавитный порядок фамилий можно не соблюдать.
 
На вход программе подаются сведения о сотрудниках некоторой фирмы. В первой строке сообщается количество сотрудников N, которое не больше 20, но не меньше 100, каждая из следующих строк имеет следующий формат: "Фамилия" "Имя" "Отчество" "Пол" "Зарплата".
"Фамилия" "Имя" "Отчество" "Пол" "Зарплата" разделены одним пробелом.
Требуется написать программу, которая будет выводить на экран среднюю зарплату, фамилию, инициалы и зарплату сотрудников мужчин, имеющих зарплату выше средней, а так же их количество. Алфавитный порядок фамилий можно не соблюдать.
Извольте:
Код:
TYPE
 T=Record
    Surname:String;
    Name:String;
    Patronymic:String;
    Sex:Char;
    Wages:LongInt;
   end;
VAR
 Empl:Array[1..100] of T;
 S:String;
 Code:Word;
 N,i,j,i1,i2,k,Number_of_Rich:Byte;
 W:Array[1..5] of String;
 Mean_Wages:Real;
BEGIN
 Write('Enter the number of employees: ');
 ReadLn(N);
 For k:=1 to N do
  begin
   WriteLn('Enter the data string: Surname, Name, Patronymic, Sex (m/w), Wages');
   ReadLn(S);
   i:=0;
   j:=0;
   Repeat
    Repeat
     Inc(i);
    Until S[i]<>' ';
    i1:=i;
    While (S[i]<>' ') and (i<Length(S)) do Inc(i);
    If i=Length(S) then i2:=i else i2:=i-1;
    Inc(j);
    W[j]:=Copy(S,i1,i2-i1+1);
   Until i=Length(S);
   Empl[k].Surname:=W[1];
   Empl[k].Name:=W[2];
   Empl[k].Patronymic:=W[3];
   Empl[k].Sex:=W[4][1];
   VAL(W[5],Empl[k].Wages,Code);
  end;
  Writeln;
  Mean_Wages:=0;
  For k:=1 to N do Mean_Wages:=Mean_Wages+Empl[k].Wages/N;
  Writeln('Mean_Wages is ',Mean_Wages:9:2);
  Writeln;
  Number_of_Rich:=0;
  For k:=1 to N do
   With Empl[k] do
    If (Sex='m') and (1.0*Wages>Mean_Wages) then
     begin
      Inc(Number_of_Rich);
      Write(Number_of_Rich:3,'. ',Surname,' ',Name[1],'.',Patronymic[1],'. ');
      For i:=1 to 12-length(Surname) do Write(' ');
      Writeln(Wages:6);
     end;
 ReadLn;
END.
 
Назад
Сверху