0 / 0 / 0
Регистрация: 01.10.2014
Сообщений: 7
1

В программе ввести массив данные и вывести список женщин по алфавиту и их заработную плату

03.10.2014, 09:03. Показов 968. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Определить тип данных запись,имеющий поля фамилии, пол, зарплата. Определить массив из 10 записей. В программе ввести массив данные и вывести список женщин по алфавиту и их заработную плату. Заранее спасибо)))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2014, 09:03
Ответы с готовыми решениями:

Вывести по алфавиту список сотрудников старше 35 лет и их среднюю заработную плату
Определить тип данных запись, имеющих поля фамилия, пол, зарплата, дата рождения. Определить массив...

По исходным данным подсчитать заработную плату для каждого рабочего и суммарную заработную плату
По указанным данным : Ф.И.О часаовая тарифная ставка(руб) ...

Вывести по алфавиту список женщин, у которых заработная плата ниже средней
Определить тип данных запись, имеющий поля фамилий, пол, зарплата. Определить массив из 10 записей....

Структуры: ввести данные о работниках и вывести их данные, отсортированные по алфавиту
Всем привет! Подскажите пожалуйста, что не так с моей функцией proverka? Мне нужно ввести данные о...

5
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7534 / 4394 / 2785
Регистрация: 22.11.2013
Сообщений: 12,588
Записей в блоге: 1
03.10.2014, 11:11 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
type
  TPerson = record
    Name: string[31];
    Sex: Char;
    Salary: Real;
  end;
const
  n=10;
  Female=['F','f','Ж','ж'];
var
  p: array [1..n] of TPerson;
  t: TPerson;
  i, j: Integer;
  Done: Boolean;
begin
  for i:=1 to n do with p[i] do begin
    WriteLn('Запись ',i);
    Write('     Фамилия: '); Readln(Name);
    Write(' Пол (мm/жf): '); ReadLn(Sex);
    Write('    Зарплата: '); ReadLn(Salary);
    WriteLn;
  end;
  for i:=1 to n do begin
    Done:=True;
    for j:=n downto i do
      if p[i].Name>p[j].Name then begin
        t:=p[i]; p[i]:=p[j]; p[j]:=t; Done:=False;
      end;
    if Done then Break;
  end;
  for i:=1 to n do with p[i] do
    if Sex in Female then WriteLn(i:2,' ',Name,'':32-Length(Name),Salary:10:2);
end.
1
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
03.10.2014, 11:34 3
bormant, сортировка неверно работает.
проверьте, пожалуйста, например, на таком тесте:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type
  TPerson = record
    Name: string[31];
    Sex: Char;
    Salary: Real;
  end;
 
const
  n=6;
  Female=['F','f','Ж','ж'];
  TestFio : array[1..n] of string =
    ('Иванова', 'Абрикосова', 'Иванцова', 'Букина', 'Ахматова','Бутикова');
 
var
  p: array [1..n] of TPerson;
  t: TPerson;
 
  i,j : integer;
  Done : boolean;
 
 
begin
  for i:=1 to n do begin 
     p[i].Name := TestFio[i];
     write(p[i].Name,' '); 
  end;
  WriteLn;
 
 
  for i:=n downto 2 do begin
    Done:=True;
    for j:=2 to i do
      if p[j].Name<p[j-1].Name then begin
        t:=p[j]; p[j]:=p[i]; p[i]:=t; Done:=False;
      end;
    if Done then Break;
  end;
 
  for i:=1 to n do write(p[i].Name,' '); 
  WriteLn;
 
  Readln
end.
если хочется улучшенный пузырёк, то я бы взял сортировку прямо с вики:
Pascal
1
2
3
4
5
6
7
8
  for j:=1 TO N-1 do begin
    Done:=True;
    for i:=1 TO N-J do
      if p[i].Name<p[i+1].Name then begin
          t:=p[i]; p[i]:=p[i+1]; p[i+1]:=t; Done:=False;
      end; 
    if Done then Break;
  end;
2
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7534 / 4394 / 2785
Регистрация: 22.11.2013
Сообщений: 12,588
Записей в блоге: 1
03.10.2014, 12:46 4
Sergio Leone,
так я ж того, исправил почти сразу на рабочий вариант.
1
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
03.10.2014, 13:07 5
Цитата Сообщение от bormant Посмотреть сообщение
так я ж того, исправил почти сразу на рабочий вариант.
если Вы имеете в виду этот код:
Pascal
1
2
3
4
5
6
7
8
  for i:=1 to n do begin
    Done:=True;
    for j:=n downto i do
      if p[i].Name>p[j].Name then begin
        t:=p[i]; p[i]:=p[j]; p[j]:=t; Done:=False;
      end;
    if Done then Break;
  end;
то он не верно работает:
Код
до сортировки:
Иванова Абрикосова Иванцова Букина Ахматова Бутикова

после сортировки:
Абрикосова Ахматова Иванцова Букина Бутикова Иванова
p.s. я же предложил программу-пример для тестирования. У Вас нет возможности запустить и проверить?
Тогда, конечно, другое дело. Я бы тоже в уме не отследил, правильно алгоритм работает или нет!
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7534 / 4394 / 2785
Регистрация: 22.11.2013
Сообщений: 12,588
Записей в блоге: 1
03.10.2014, 15:06 6
Итого, в сухом остатке:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
type
  TPerson = record
    Name: string[31];
    Sex: Char;
    Salary: Real;
  end;
const
  n=10;
  Female=['F','f','Ж','ж'];
var
  p: array [1..n] of TPerson;
  t: TPerson;
  i, j: Integer;
  Done: Boolean;
begin
  for i:=1 to n do with p[i] do begin
    WriteLn('Запись ',i);
    Write('     Фамилия: '); Readln(Name);
    Write(' Пол (мm/жf): '); ReadLn(Sex);
    Write('    Зарплата: '); ReadLn(Salary);
    WriteLn;
  end;
  for i:=1 to n-1 do begin
    Done:=True;
    for j:=1 to n-i do
      if p[j+1].Name<p[j].Name then begin
        t:=p[j]; p[j]:=p[j+1]; p[j+1]:=t; Done:=False;
      end;
    if Done then Break;
  end;
  j:=1;
  for i:=1 to n do with p[i] do
    if Sex in Female then begin
      WriteLn(j:2,' ',Name,'':32-Length(Name),Salary:10:2); Inc(j);
    end;
end.
PS. Первый раз захотелось воспользоваться готовым, а не выписать самому, и вот те раз :-) Где только мне эти 2 варианта под руку попались, ума не приложу... Не зря говорят, поспешишь -- насмешишь.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2014, 15:06
Помогаю со студенческими работами здесь

Вывести среднюю заработную плату
Доброго времени суток... пишу программу и столкнулся с проблемой!) суть ее в том что бы при...

Ввести символьный массив и вывести встречающиеся в нем буквы по алфавиту
Помогите написать программу: ввести символьный массив и вывести на экран встречающиеся в нем буквы...

Ввести массив из 5 чисел. Упорядочить массив и вывести данные в окно.
Ввести массив из 5 чисел. Упорядочить массив и вывести данные в окно. После нажатия клавиши &lt;...

Вывести список спортсменов моложе 25 лет, чей вес превышает 70 килограмм. Вывести отдельно мужчин и женщин
Здравствуйте, помогите, пожалуйста. Составить список участников соревнований из 10 человек с...

Рассчитать заработную плату
Привет всем))))) У меня почти выполнено задание...только я не представляю как я должна найти ...

Рассчитать заработную плату
Дана сумма начислений з/р. Из этой суммы необходимо удержать 12 % на подоходный налог, 1% на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru