Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 44
1

Вывести в файл данные о работнике, имеющем максимальный оклад

12.01.2017, 16:19. Показов 1790. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Правильно ли я выполнила? Не могу найти ошибку
Задание:
Составить программу, которая создает файл F, компоненты которого имеют следующую структуру: табельный номер, ФИО, оклад. Ввести в файл данные о пяти работниках, вывести в файл G данные о работнике имеющем максимальный оклад.
По завершении программы созданные файлы уничтожить.
Решение
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
const n=5;
type worker=record
     num:byte;
     fio:string[50];
     oklad:real;
     end;
var w:array[1..n]of worker;
    G:file of worker;
    f1:Text;
    i:integer;
    max:real;
begin
Assign(G,'data.txt');
Assign(f1,'result.txt');
Rewrite(f1); Rewrite(G);
for i:=1 to n do
begin
  writeln('Введите данные ',i,' работника:');
  write('Введите табельный номер: '); readln(w[i].num);
  write('Введите ФИО: '); readln(w[i].fio);
  write('Введите оклад: '); readln(w[i].oklad);
  write(G,w[i]);
end;
max:=0;
for i:=1 to n do
if w[i].oklad>max then max:=w[i].oklad;
write(f1,max);
Erase(f1); Erase(G)
Close(f1); Close(G);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2017, 16:19
Ответы с готовыми решениями:

Ввести в файл данные о пяти работниках и вывести в другой файл максимальный оклад
Задача на pascal abc,решить задачу используя type Помогите пожалуйста очень надо) Составить...

Вывести информацию о оборудовании, имеющем максимальную стоимость
создал таблицу как вывести запрос что бы показывал максимальную стоимость, без SQL, что надо писать...

Определить средний оклад и ФИО сотрудника имеющего самый высокий оклад
всем привет, прошу понять меня правильно поступил на программиста но понял что нечего не...

Данные о сотрудниках, оклад которых превышает средний
Вывести все данные о сотрудниках, оклад которых превышает средний не менее чем на 1000 р

8
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
12.01.2017, 17:21 2
Немного с ошибками. Замените:
Pascal
5
    max:worker;
Pascal
24
max.oklad:=0;
Pascal
26
27
28
29
30
31
32
if w[i].oklad>max.oklad then max:=w[i];
write(f1,'Табельный номер: ',max.num,', ФИО: ',max.fio, ', Оклад: ', max.oklad);
write('Рабочий с максимальным окладом: табельный номер: ',max.num,', ФИО: ',max.fio, ', Оклад: ', max.oklad);
readln;
Close(f1); Close(G);
Erase(f1); Erase(G)
end.
Печать на экран можете убрать, но тогда программа какая-то уже совсем нелогичная будет... Ввели и сразу же всё уничтожили.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.01.2017, 17:25 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
const n=5;
type worker=record
     num:byte;
     fio:string[50];
     oklad:real;
     end;
var w,x:worker;
    F:file of worker;
    G:Text;
    i:integer;
    max:real;
begin
Assign(F,'data');
Rewrite(F);
for i:=1 to n do
 begin
  writeln('Введите данные ',i,' работника:');
  write('Введите табельный номер: '); readln(w.num);
  write('Введите ФИО: '); readln(w.fio);
  write('Введите оклад: '); readln(w.oklad);
  write(F,w);
 end;
reset(F);
for i:=0 to filesize(F)-1 do
 begin
  read(F,w);
  if i=0 then
   begin
    max:=w.oklad;
    x:=w;
   end
  else if w.oklad>max then
   begin
    max:=w.oklad;
    x:=w;
   end;
 end;
close(F);
Assign(G,'result.txt');
Rewrite(G);
write(G,x.num,' ',x.fio,' ',x.oklad:0:2);
Close(G);
Erase(F);
Erase(G) ;
writeln('Файл записей создан, сведения о работнике записаны в файл result.txt');
writeln('Но посмотреть это Вы не можете поскольку кто-то написал, что файлы нужно уничтожить');
end.
1
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 44
12.01.2017, 17:33  [ТС] 4
а если без уничтожения, нужно убрать Erase и всё?
0
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
12.01.2017, 17:35 5
Да.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.01.2017, 18:26 6
Цитата Сообщение от Viktoriya_17 Посмотреть сообщение
а если без уничтожения, нужно убрать Erase и всё?
файл записей можно уничтожить, а текстовый нет.
0
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 44
02.02.2017, 13:48  [ТС] 7
29
Цитата Сообщение от Puporev Посмотреть сообщение
max:=w.oklad;
объясните зачем между w и oklad точка стоит?
0
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
02.02.2017, 13:51 8
http://pas1.ru/record
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.02.2017, 13:52 9
Потому что переменная w имеет тип record, запись с полями
w.num - номер
w.fio - фио
w.oklad - оклад
1
02.02.2017, 13:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.02.2017, 13:52
Помогаю со студенческими работами здесь

Найти максимальный элемент массива и вывести данные про его местонахождение
Задан масив T. Необходимо найти максимальный элемент массива и вывести данные про его...

Файл: Вывести в файл данные про отличников или хорошистов
Здравствуйте, помогите, пожалуйста. Работа с файлами. f = open("line.txt", "w")...

Вывести текстовый файл в Stringgrid1 отсортировать данные по условию и вывести в Stringgrid2
Помогите пожалуйста написать программу, кому не сложно. Условие задачи: Распечатать анкетные данные...


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

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