Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний технічний університет України
“Київський політехнічний інститут”
Кафедра ОТ
ЗВІТ
про виконання лабораторної роботи № 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.
Результати виконання програми
/
Висновок
Під час виконання лабораторної роботи я вивчив особливості створення і обробки типізованих файлів.
Програма працює правильно:сортує професії за окладом, додає запис про середній оклад в кінець файлу.