|
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
|
|
| 05.12.2008, 18:05 | |
|
Ответы с готовыми решениями:
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
|
|
| 05.12.2008, 19:55 | |
|
Помогаю со студенческими работами здесь
4
Лабораторная работа по С Лабораторная работа лабораторная работа Лабораторная работа 1 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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
|