Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний технічний університет України
“Київський політехнічний інститут”
Кафедра ОТ
ЗВІТ
про виконання лабораторної роботи № 9.1
з дисципліни
“Основи програмування та алгоритмічні мови”
Тема: ТИПІЗОВАНІ ФАЙЛИ
Варіант 28
Постановка задачі
Заданий файл записів з полями: посада, оклад. Створити новий файл, який містить список посад у порядку зменшення їх окладів. Визначити середній посадовий оклад.
Аналітичні викладки
Зчитати файл у масив записів, відсортувати за окладами, визначити середній оклад, записати дані в файл.
Блок-схема алгоритму розв’язання задачі
Текст програми
program lab_9;
uses crt;
type str = string[10];
field = record
prof : str;
okl : word;
end;
mas = array[1..20] of field;
fil = file of field;
{створення файлу за допомогою програми}
procedure create;
var fin : file of field;
t : field;
y:char;
begin
Assign (fin, 'fin.txt');
rewrite (fin);
repeat
with t do
begin
Write ('Spec: ':7); readln(prof);
Write ('Oklad: ':7); readln(okl);
end;
write(fin,t);
writeln ('Eshe? (y/n)'); readln (y);
until (y <> 'y') and (y <> 'Y');
close (fin);
end;
{зчитування файлу в масив}
procedure readmas(var m:mas; var n:byte);
var i:byte;
fin : file of field;
begin
Assign (fin, 'fin.txt');
reset (fin);
i := 1;
while not eof(fin) do
begin
read(fin,m[i]);
i := i + 1;
end;
n := i - 1;
close(fin);
end;
{запис в файл}
procedure writemas(const m:mas; n:byte);
var i:byte;
fout : file of field;
var t:field;
begin
Assign (fout, 'fout.txt');
rewrite (fout);
for i := 1 to n do
begin
t := m[i];
write(fout, t);
end;
close (fout);
end;
procedure swap(var a, b: field);
var c : field;
begin
c := a;
a := b;
b := c;
end;
{сортування масиву}
procedure sort(var m:mas; n:byte);
var j, k: integer;
begin
For k:=1 to n-1 do
for j := 1 to n-k do
if m[j].okl < m[j+1].okl
then swap(m[j],m[j+1]);
end;
{додання середнього окладу}
procedure addmax(var m:mas; var n:byte);
var i:byte;
s:word;
begin
for i := 1 to n do
s := s + m[i].okl;
s := round (s/n);
n := n + 1;
with m[n] do
begin
prof := 'sred';
okl := s;
end;
end;
{виведення файлу на екран}
procedure out(s:string);
var fout:file of field;
t:field;
begin
assign (fout, s);
reset (fout);
while not eof(fout) do
begin
read (fout,t);
writeln (t.prof:12, t.okl:7);
end;
close (fout);
end;
var m:mas; {Масив даних}
n:byte; {кількість записів}
y:char;
begin
TextColor(0);
TextBackGround(7);
clrscr;
writeln('Sozdat fail? (y/n)');
readln(y);
if (y = 'Y') or (y = 'y') then create;
out('fin.txt');
writeln;
readmas(m, n);
sort (m, n);
addmax (m, n);
writemas (m, n);
out('fout.txt');
readln
end.
Результати виконання програми
/
Висновок
Під час виконання лабораторної роботи я вивчив особливості створення і обробки типізованих файлів.
Програма працює правильно:сортує професії за окладом, додає запис про середній оклад в кінець файлу.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!