Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/78: Рейтинг темы: голосов - 78, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 03.11.2008
Сообщений: 20

Лабораторная работа №5. Работа с файлами и алгоритмы сортировки

05.12.2008, 18:05. Показов 15683. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о работниках и заработной плате. В первой строке файла находится количество рабочих дней в месяце. Далее для каждого работника в файле записано по две строки: в первой – фамилия работника, во второй – два числа – количество отработанных дней и месячный оклад. После загрузки файла вывести на экран ко-личество считанных записей.
2. Написать функцию Calc для вычисления зарплаты каждого ра-ботника по формуле

с округлением значения до двух десятичных знаков. Функция должна также подсчитать итоговую зарплату.
3. Написать функцию Save для выгрузки в файл ведомости заработ-ной платы в виде следующей таблицы.

+----------------------+---+----------+----------+
| Фамилия |Дни| Оклад | Зарплата |
+----------------------+---+----------+----------+
|Петров | 15| 6300.00| 3937.50|
|Иванов | 24| 5600.00| 5600.00|
| ... |...| ... | ... |
+----------------------+---+----------+----------+
|Итого | 23687.50|
+-------------------------------------+----------+

Ширина колонок: «Фамилия» – 40 символов, «Дни» – 3 символа, «Оклад» и «Зарплата» – по 10 символов. Фамилию необходимо вырав-нивать по левому краю, цифры – по правому. Зарплату выводить с дву-мя десятичными знаками.
4. Написать функцию SortByName для сортировки списка работни-ков по алфавиту методом пузырьковой сортировки.
5. В основной программе: загрузить список из файла Workers.dat, рассчитать зарплату, выгрузить ведомость в файл Pay.txt, отсортировать список по алфавиту, выгрузить ведомость в файл ByName.txt.

Дополнительные задачи.
1. Добавить функцию SortByPay для сортировки списка по зарпла-те. В основной программе отсортировать список еще и по зарплате, вы-грузить ведомость в файл ByPay.txt.
2. Добавить в функции сортировки подсчет и вывод на экран коли-чества сравнений. Выполнить программу для трех различных списков с количеством 5, 10 и 15 сотрудников соответственно. Записать для каж-дого списка максимальное количество сравнений из полученных при сортировке по имени и зарплате. Построить график зависимости коли-чества сравнений от длины списка.

Добавлено через 48 секунд
я создал код проги но она несовсем праильно идет помогите
program Lab5;
{$APPTYPE CONSOLE}
uses SysUtils;

type
Worker=record
Name:string;
Days:Integer;
Salary,Pay:Real;
end;

var
Days:Integer;
W:array [0..1000] of Worker;
n:Integer;
Total:Real;

procedure Load(const Name:string);
var
h:Text;
begin
Assign(h,Name);
Reset(h);

Readln(h,Days);
n:=0;
while not Eof(h) do
begin
Inc(n);
Readln(h,W[n].Name);
Readln(h,W[n].Days,W[n].Salary);
end;

Close(h);

Writeln('Считано строк: ',n);
end;

procedure Calc;
var
i:Integer;
begin
Total:=0;
for i:=1 to n do
begin
W[i].Pay:=Round(W[i].Salary*W[i].Days/Days*100)
/100;
Total:=Total+W[i].Pay;
end;
end;

procedure Save(const Name:string);
var
h:Text;
i:Integer;
begin
Assign(h,Name);
Rewrite(h);

Writeln(h,'+-------…-------+---+---…---+---…----+');
Writeln(h,'| Фамилия |Дни| Оклад |Зарплата|');
Writeln(h,'+-------…-------+---+---…---+---…----+');
for i:=1 to n do
Writeln(h,'|',W[i].Name,'':40-Length(W[i].Name),
'|',W[i].Days:3,'|',W[i].Salary:10:2,
'|',W[i].Pay:10:2,'|');
Writeln(h,'+-------…-------+---+---…---+---…----+');
Writeln(h,'|Итого |',
Total:10:2,'|');
Writeln(h,'+-------…-------+---+---…---+---…----+');

Close(h);
end;

procedure SortByName;
var
Stop:Boolean;
Last,Cmp,i:Integer;
Temp:Worker;
begin
Last:=n;
Cmp:=0;
repeat
Stop:=True;
Dec(Last);
for i:=1 to Last do
begin
Inc(Cmp); {Подсчет количества сравнений}
if W[i].Name>W[i+1].Name then
begin
Temp:=W[i];
W[i]:=W[i+1];
W[i+1]:=Temp;
Stop:=False;
end;
end;
until Stop;
Writeln('Сравнений при сортировке по имени: ',Cmp);
end;

procedure SortByPay;
var
Stop:Boolean;
Last,Cmp,i:Integer;
Temp:Worker;
begin
Last:=n;
repeat
Stop:=True;
Dec(Last);
for i:=1 to Last do
begin
Inc(Cmp); {Подсчет количества сравнений}
if W[i].Pay>W[i+1].Pay then
begin
Temp:=W[i];
W[i]:=W[i+1];
W[i+1]:=Temp;
Stop:=False;
end;
end;
until Stop;
Writeln('Сравнений при сортировке по зарплате:',Cmp);
end;

begin
Load('Workers.txt');
Calc;
Save('Pay.txt');

SortByName;
Save('ByName.txt');

SortByPay;
Save('ByPay.txt');

Readln; {Задержка для консольных приложений}
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.12.2008, 18:05
Ответы с готовыми решениями:

Алгоритмы. Работа с файлами и массивами
Всем доброго здоровья! Второй день ломаю голову над задачей не могу решить. Кому интересно прошу поучаствовать. Задача: Из файла...

Лабораторная "Работа с файлами и структурами данных" - обсуждение
Здравствуйте, Есть такое задание: Составить программу со следующими свойствами: 1)вводится неограниченное количество строк...

Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы... Для начала вот само задание: В справочной автовокзала хранится расписание движения автобусов....

3
1 / 1 / 0
Регистрация: 05.12.2008
Сообщений: 14
05.12.2008, 19:10
Обязательно файл должен быть текстовым???
0
0 / 0 / 0
Регистрация: 03.11.2008
Сообщений: 20
05.12.2008, 19:39  [ТС]
volan4ikthebest, а в файл как я должен написать текст
0
1 / 1 / 0
Регистрация: 05.12.2008
Сообщений: 14
05.12.2008, 19:55
Ставиш обьект - StringGrid и с него по ячейкам считываешь - он предназначен для работы с таблицами.
Закинуть процедуры???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2008, 19:55
Помогаю со студенческими работами здесь

Работа с файлами, чтение/работа со строкой
Доброго времени суток. Начал работать с C++ Builder 6. Есть текстовый файл .txt с различными строками, как можно производить...

Лабораторная работа по С
Здравствуйте уважаемые программисты. Очень нужна Ваша помощь. На завтра нужно сделать лабораторные по С. А я в нем совсем ничего не понимаю...

Лабораторная работа
Здравствуйте! Условие: Передача данных по линии связи ограничена скоростью X Кб/c. Каждую секунду поступает некоторое известное...

лабораторная работа
1. Как направлена колебательная скорость молекул воздуха в акустической волне по отношению к направлению ее распространения? 2....

Лабораторная работа 1
Всем привет) Ребята, помогите пожалуйста написать 1. (1 балл) Вычислите по известным формулам. Тело двигается равномерно по...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru