С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 6
1

Создать файл, содержащий сведения о работниках фирмы

27.05.2013, 10:17. Показов 6739. Ответов 3
Метки нет (Все метки)

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

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

вот программа:
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
uses crt;
type
   firm = record
      f,d,o: string;
      gr,st,okl: integer;
      end;
var
   s,f,d,o,gr1,st1,okl1:array [1..100] of string;
   a: array[1..100] of firm;
   filename, obr:string;
   k,x,i,min,q,w,j,code,rew:integer;
   gr,st,okl:array [1..100] of integer;
   t: text; key: char;
begin
  k:=1;
   write('введите имя файла: ');
   readln(filename);
   assign(t,filename);
   rewrite(t);
   repeat
      inc(i);
      with a[i] do begin
         write('фамилия работника: ');
         readln(f);
         write(t,f,' ');
         write('должность: ');
         readln(d);
         write(t,d,' ');
         write('образование: ');
         readln(o);
         write(t,o,' ');
         write('год рождения: ');
         readln(gr);
         write(t,gr,' ');
         write('стаж работы: ');
         readln(st);
         write(t,st,' ');
         write('оклад: ');
          readln(okl);
         write(t,okl);
         writeln(t);
      end;
         writeln('Выход? (д/н) ');
         readln(key); if key='н' then k:=k+1;
         until upcase(key)='Д';
   close(t);
   reset(t);
for i:=1 to k do
 while not eof(t) do
begin
readln(t,s[i]);
end;
    for i:=1 to k do
    begin
    Insert (' ', s[i],length(s[i])+1);
    for j:=1 to length(s[i]) do
    begin
    w:=pos(' ',s[i]);
    f[j]:=copy(s[i],1,w-1);
    Delete(s[i],1,w);
     w:=pos(' ',s[i]);
    d[j]:=copy(s[i],1,w-1);
    Delete(s[i],1,w);
     w:=pos(' ',s[i]);
    o[j]:=copy(s[i],1,w-1);
    Delete(s[i],1,w);
     w:=pos(' ',s[i]);
    gr1[j]:=copy(s[i],1,w-1);
    Delete(s[i],1,w);
     w:=pos(' ',s[i]);
    st1[j]:=copy(s[i],1,w-1);
    Delete(s[i],1,w);
     w:=pos(' ',s[i]);
    okl1[j]:=copy(s[i],1,w-1);
   Delete(s[i],1,w);
    end;
    end;
    for i:=1 to k do begin
    Val(gr1[i],gr[i],code);
    Val(st1[i],st[i],code);
    Val(okl1[i],okl[i],code);
    end;
    obr:='высшее';
    writeln('содрудники с высшим образованием: ');
    for i:=1 to k do
    begin
    if o[i]=obr then writeln(f[i]) else rew:=rew+1;
    end;
    if rew=k then writeln('сотрудников с высшим образованием нет');
      write('введите максимальный возраст ');readln(x);
    q:=2013-x;
    writeln('сотрудники младше ',x,':');
    for i:=1 to k do
    begin
    if gr[i]>q then writeln(f[i],' ',st[i]);
    end;
     min:=okl[1];
for i:=2 to k do
  begin
     if min>okl[i] then
       min:=okl[i];
  end;
  for i:=1 to k do
  if okl[i]=min then
         writeln('фамилия работника: ',f[i],'; минимальный оклад: ',min);
 readkey;
   close(t);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2013, 10:17
Ответы с готовыми решениями:

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

Создать файл toys, содержащий сведения об игрушках
Люди помогите,а.... первые темы по этому паскалю сделала, а дальше всё... не могу.... помогите хоть...

Создать файл, содержащий сведения о пациентах поликлинники.
Приветствую! прошу решить следующую задачку: Создать файл, содержащий сведения о пациентах...

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

3
77 / 77 / 52
Регистрация: 28.02.2013
Сообщений: 206
Записей в блоге: 9
27.05.2013, 12:36 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
{Создать файл, содержащий сведения о работниках фирмы. 
Каждая запись содержит поля: фамилия работника, должность, образование, 
год рождения, стаж работы, оклад. Количество записей произвольное. 
Написать программу, выводящую на экран следующую информацию:
- список работников, имеющих высшее образование;
- список работников младше возраста X с указанием стажа работы;
- у кого из рабочих самый маленький оклад.}
 
program xxx;
 
type ed = record
    high : boolean;
    mid : boolean;
    no : boolean;
end;
 
type data = record
    lastname : string;
    post : string;
    education : ed;
    year : integer;
    exp : integer;
    salary : integer;
end;
 
const n = 3; //Кол-во записей
 
var f : file of data;
        a : array [1..n] of data;
        
function AttachFile() : boolean;
var x : string;
begin
    write('Введите путь: ');
    readln(x);
    assign(f,x);
    rewrite(f);
    AttachFile := true;
end;
 
procedure AddData();
var i,temp : integer;
begin
    writeln('Введите информацию: ');
    for i := 1 to n do
        begin
            write('Фамилия ',i,'-ого работника: ');
            readln(a[i].lastname);
            write('Должность: ');
            readln(a[i].post);
            write('Образование (1-высшее,2-среднее,3-нету: '); //тут можно естественно изменить увеличив например case, неполное среднее и тд. и в этом случае изменить тип "ed"
            readln(temp);
            case temp of
                1 : a[i].education.high := true;
                2 : a[i].education.mid := true;
                3 : a[i].education.no := true;
            end;
            write('Год рождения: ');
            readln(a[i].year);
            write('Стаж работы: ');
            readln(a[i].exp);
            write('Оклад: ');
            readln(a[i].salary);
            write(f,a[i]);
        end;
end;
 
procedure SearchEducation();
var i : integer;
begin
    writeln('Высшее образование имеют: ');
    for i := 1 to n do
        begin
            if a[i].education.high then
                writeln(a[i].lastname);
        end;
end;
 
procedure SearchAge();
var i,temp : integer;
begin
    write('Введите год рождения: ');
    readln(temp);
    writeln('Список работников младше введенного возраста: ');
    for i := 1 to n do
        begin
            if a[i].year > temp then
                writeln(a[i].lastname);
        end;
end;
 
procedure SearchSalary();
var i : integer;
        temp : data;
begin
    write('Самый маленький оклад у: ');
    temp := a[1];
    for i := 1 to n do 
        begin
            if temp.salary > a[i].salary then
                begin
                    temp.salary := a[i].salary;
                    temp.lastname := a[i].lastname;
                end;
        end;
    writeln(temp.lastname,' равный : ',temp.salary);
end;
 
begin
    if AttachFile() then
        begin
            AddData();
            SearchEducation();
            SearchAge();
            SearchSalary();
        end;
    readln;
    close(f);
end.
1
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 6
27.05.2013, 20:06  [ТС] 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
Uses crt;
type
   firm = record
      f,d,o: string;
      gr,st,okl: integer;
      end;
var
   a,p: array[1..100] of firm;
   obr:string;
   n,x,i,min,q,w,j,code,rew:integer;
   t: file of firm;
Begin
write('количество сотрудников='); readln(n);
assign(t,'firma');
rewrite(t);
for i:=1 to n do
with a[i] do
begin
write('фамилия ',i,' сотрудника: '); readln(f);
write('должность: '); readln(d);
write('образование: '); readln(o);
write('год рождения: '); readln(gr);
write('стаж работы: '); readln(st);
write('оклад: '); readln(okl);
write(t,a[i]);
end;
close(t);
w:=0;
obr:='высшее';
writeln('введите максимальный возраст: ');readln(x);
q:=2013-x;
assign(t,'firma');
reset(t);
writeln('сотрудники с высшим образованием:');
for i:=1 to n do
begin
read(t,p[i]);
if (obr=p[i].o) then
writeln(p[i].f) else inc(w);
end;
if w=n then writeln('сотрудников с высшим образованием нет ');
w:=0;
writeln('сотрудники младше ',x,':');
for i:=1 to n do
if (q<p[i].gr) then
writeln(p[i].f,' ',p[i].st) else inc(w);
if w=n then writeln('сотрудников младше ',x,' нет ');
 min:=p[1].okl;
for i:=2 to n do
  begin
     if min>p[i].okl then
       min:=p[i].okl;
  end;
  writeln('самый маленький оклад у:');
for i:=1 to n do
if (min=p[i].okl) then
writeln(p[i].f);
close(t);
end.
P.S.: может кому да и поможет
0
77 / 77 / 52
Регистрация: 28.02.2013
Сообщений: 206
Записей в блоге: 9
28.05.2013, 16:23 4
Как вам угодно, но с процедурами/функциями было бы лучше.
0
28.05.2013, 16:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2013, 16:23
Помогаю со студенческими работами здесь

Создать файл, содержащий сведения о фильмах
Создать файл, содержащий сведения о фильмах. Каждая запись файла должна содержать название фильма ,...

Создать файл, содержащий сведения о сотрудниках
Создать файл, содержащий сведения о сотрудниках. Каждая запись файла должна содержать фамилию,...

Создать файл, содержащий сведения о машинах на автостоянке
Создать файл, содержащий сведения о машинах на автостоянке. Каждая запись файла должна содержать...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru