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

Вывести на экран и в отдельный файл список сотрудников по отделам в порядке убывания стажа

26.05.2012, 15:24. Показов 3908. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать файл, содержащий информацию о сотрудниках предприятия. Каждая запись содержит: фамилию, имя, отчество, номер отдела, стаж работы. Вывести на экран и в отдельный файл список сотрудников по отделам в порядке убывания стажа.

Написал начало - дальше ступор.Есть сомнения в правильности подхода.
Вопрос относительно вывода списка именно в порядке убывания стажа - как лучше?Ниже приведено то, что смог написать, как продолжить?
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
uses crt;
type Sotrudniki = record
       Surname,SecondName,Name:string[20];
       Otdel, Stazh:byte;
  end;
  var p: Sotrudniki;
      n,i,k,re:integer;
      f:file of Sotrudniki;
      ss: real;
      x: string;
  begin
       clrscr;
       assign(f,'C:\Sotrudniki.dat');
       rewrite(f);
       write('Введите количество сотрудников предприятия:  ');
       readln(n);
     for i:=1 to n do
         with p do
         begin
           writeln(' Сотрудник № ',i);
             write(' Фамилия: '); readln(SecondName);
             write(' Имя: '); readln(Name);
             write(' Отчество:  '); readln(Surname);
             write(' Номер отдела:  '); readln(Otdel);
             write(' Стаж работы: '); readln(Stazh);
             write(f,p);
         end;
         writeln('Файл записан.Для продолжения работы нажать "Enter" ');
           readln;
           close(f);
        clrscr;
Помогите, пожалуйста

Добавлено через 7 часов 11 минут
помогите добить програму, будьте любезны

Добавлено через 2 часа 31 минуту
Программа для сортировки элементов массива по убыванию приведена ниже.
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
Program pr35 (Input, Output);           
Var     
X: Array [1..20] Of Real;           
N: Integer;                 
i, j  : Integer;            
Y : Real;       
Begin       
WriteLn (' Расположение по убыванию чисел X[1],X[2], ...X[N] ');                 
Write ('Введите число сортируемых элементов:  N = ');                   
ReadLn (N);             
WriteLn ('Введите элементы массива:');        
For i := 1 To N Do                  
Begin       
Write ('X[', i, '] = ');                
ReadLn (X [i] );        
End;        
For i := 1 To N - 1 Do                                  
For j := i + 1 To N Do
If X [j] > X [i] Then                   
Begin       
Y := X [j];                 
X [j] := X [i];             
X [i] := Y;                 
End;        
WriteLn;                
WriteLn ('Отсортированный массив:');           
For i := 1 To N Do                  
Write (X [i] : 5: 1);                   
ReadLn;     
End.
Каким образом скомпиллировать их в одну?
Не хватает знаний, подскажите, пожалуйста.

Добавлено через 13 часов 31 минуту
ребят, помогите, пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2012, 15:24
Ответы с готовыми решениями:

Вывести в отдельный текстовый файл и на экран список классов в школе, в которых насчитывается 10 учащихся.
Дан текстовый файл, содержащий сведения о учениках: имя, фамилия, название класса. Вывести в...

Вывести на экран и в отдельный файл отсортированный по алфавиту список студентов
Элементами структуры являются: фамилия студента, номер группы, место проживания (общежитие или...

Вывести в отдельный файл и на экран отсортированный по алфавиту список студентов
Создать файл, содержащий сведения о результатах сессии: фамилия и инициалы студента, номер группы,...

Вывести в отдельный файл и на экран отсортированный по алфавиту список студентов каждой группы
Создать файл, содержащий сведения о результатах сессии: фамилия и инициалы студента, номер группы,...

4
Почетный модератор
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
27.05.2012, 12:13 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
uses crt;
const nmax=100;
      line='--------------------------------------';
      shap='|       Фамилия       | Отдел | Стаж |';
type Sotrudniki = record
       Surname,SecondName,Name:string[20];
       Otdel, Stazh: byte;
  end;
  var p: Sotrudniki;
      a: array [1..nmax] of Sotrudniki;
      n,i,k,re:integer;
      f:file of Sotrudniki;
      ss: real;
      x: string;
  begin
  clrscr;
  assign(f,'C:\Sotrudniki.dat');
  rewrite(f);
  write('Введите количество сотрудников предприятия:  ');
  readln(n);
  for i:=1 to n do
      with p do
           begin
           writeln(' Сотрудник № ',i);
             write(' Фамилия: '); readln(SecondName);
             write(' Имя: '); readln(Name);
             write(' Отчество:  '); readln(Surname);
             write(' Номер отдела:  '); readln(Otdel);
             write(' Стаж работы: '); readln(Stazh);
             write(f,p);
           end;
writeln('Файл записан.Для продолжения работы нажать "Enter" ');
readln;
reset(f);
n:=0;
while not (eof(f)) do
      begin
      read(f,p);
      inc(n);
      a[n]:=p;
      end;
re:=0;
while re<=n*2 do
      begin
      for i:=1 to n-1 do
          if (a[i].Otdel=a[i+1].Otdel) and (a[i].Stazh<a[i+1].Stazh) then
             begin
             p:=a[i];
             a[i]:=a[i+1];
             a[i+1]:=p;
             end else
                 if a[i].Otdel>a[i+1].Otdel then
                    begin
                    p:=a[i];
                    a[i]:=a[i+1];
                    a[i+1]:=p;
                    end;
      inc(re);
      end;
close(f);
rewrite(f);
for i:=1 to n do
    with a[i] do
         write(f,a[i]);
clrscr;
writeln('Список сотрудников по отделам');
writeln(line);
writeln(shap);
writeln(line);
reset(f);
while not (eof(f)) do
      begin
      read(f,p);
      with p do
           writeln('|',Surname:20,'|':2,Otdel:4,'|':4,Stazh:4,'|':3);
      writeln(line);
      end;
close(f);
readln;
end.
2
3 / 3 / 0
Регистрация: 22.05.2012
Сообщений: 9
27.05.2012, 13:11  [ТС] 3
КонецСвета, спасибо огромнейшее, низкий поклон.
Осмелился немного подправить, вид табличный немного изменил и усовершенствовал. Таблица выводится на ура в порядке убывания, с именем, фамилией и отчеством.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
uses crt;
const nmax=100;
      line='-------------------------------------------------------------------------------';
      shap='|       Фамилия                                                | Отдел | Стаж |';
type Sotrudniki = record
       Surname,SecondName,Name:string[20];
       Otdel, Stazh: byte;
  end;
  var p: Sotrudniki;
      a: array [1..nmax] of Sotrudniki;
      n,i,k,re:integer;
      f:file of Sotrudniki;
      ss: real;
      x: string;
  begin
  clrscr;
  assign(f,'C:\Sotrudniki.dat');
  rewrite(f);
  write(' Введите количество сотрудников предприятия :  ');
  readln(n);
  for i:=1 to n do
      with p do
           begin
           writeln;
           writeln(' Сотрудник № ',i);
             write(' Фамилия : '); readln(SecondName);
             write(' Имя : '); readln(Name);
             write(' Отчество :  '); readln(Surname);
             writeln;
             write(' Номер отдела :  '); readln(Otdel);
             write(' Стаж работы : '); readln(Stazh);
             write(f,p);
           end;
writeln('файл записан.Для продолжения работы нажмите "Enter" ');
readln;
reset(f);
n:=0;
while not (eof(f)) do
      begin
      read(f,p);
      inc(n);
      a[n]:=p;
      end;
re:=0;
while re<=n*2 do
      begin
      for i:=1 to n-1 do
          if (a[i].Otdel=a[i+1].Otdel) and (a[i].Stazh<a[i+1].Stazh) then
             begin
             p:=a[i];
             a[i]:=a[i+1];
             a[i+1]:=p;
             end else
                 if a[i].Otdel>a[i+1].Otdel then
                    begin
                    p:=a[i];
                    a[i]:=a[i+1];
                    a[i+1]:=p;
                    end;
      inc(re);
      end;
close(f);
rewrite(f);
for i:=1 to n do
    with a[i] do
         write(f,a[i]);
clrscr;
writeln(' Список сотрудников по отделам ');
writeln(line);
writeln(shap);
writeln(line);
reset(f);
while not (eof(f)) do
      begin
      read(f,p);
      with p do
           writeln('|',Secondname:20,'',Name:20,'',Surname:20,'|':2,Otdel:4,'|':4,Stazh:4,'|':3);
      writeln(line);
      end;
close(f);
readln;
end.
С блок-схемой сего чуда помощи можно попросить?
заранее благодарен.
2
Почетный модератор
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
27.05.2012, 13:13 4
reggie, тогда уж и в шапку добавь "Имя, отчество" =)
2
3 / 3 / 0
Регистрация: 22.05.2012
Сообщений: 9
27.05.2012, 13:19  [ТС] 5
Цитата Сообщение от КонецСвета Посмотреть сообщение
reggie, тогда уж и в шапку добавь "Имя, отчество" =)
это просмотрел, спасибо.
смысл моей подработки был в том, что изначально в таблице указывало только отчество, решил туда забить все, дабы сделать более наглядным.
0
27.05.2012, 13:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2012, 13:19
Помогаю со студенческими работами здесь

Вывести список сотрудников по отделам в порядке убывания стажа
Информация о сотрудниках предприятия содержит: - Ф.И.О.; - номер отдела; - должность; - дату...

Вывести списки сотрудников по отделам в порядке убывания стажа.
Информация о сотрудниках предприятия содержит: Ф.И.О., номер отдела, должность, дату начала работы....

Вывести списки сотрудников по отделам в порядке убывания стажа в DataGridView
Задание: Информация о сотрудниках предприятия содержит: Ф.И.О., номер отдела, должность, дату...

Сортировка сотрудников в порядке убывания стажа
Здравствуйте! Помогите пожалуйста написать программу: информация о сотрудниках предприятия...


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

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

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