Laba_infa7 (Все ЛР)
Описание файла
Файл "Laba_infa7" внутри архива находится в папке "Labs". Документ из архива "Все ЛР", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Онлайн просмотр документа "Laba_infa7"
Текст из документа "Laba_infa7"
Задача
Средствами текстового редактора создать 2 файла. Каждый файл состоит из целых чисел, упорядоченных по убыванию, и расположенных по 3 числа в строку. Написать процедуру с параметрами для создания типизированного файла, в котором числа также упорядочены по убыванию. При этом следует учитывать исходную упорядоченность файлов, т.е. каждый элемент сразу располагается на своем месте. Вывести содержимое типизированного файла на экран с помощью другой процедуры с параметрами.
Далее прочитать содержимое типизированного файла и занести его в строковую переменную, расположив числа на расстоянии 2-х пробелов друг от друга. Ввести с клавиатуры число и вставить его в строку, соблюдая упорядоченность. Распечатать исходную и преобразованную строки.
Дополнительных массивов не использовать.
Требования
Требования к отчету:
- титульный лист;
- формулировка задания;
- листинг программы;
- набор исходных тестовых данных с результатами (скриншоты окна).
Общие для всех требования :
- использование типизированных и текстовых файлов;
- манипуляции со стрингами;
- использование данных комбинированного типа.
Код
program Lab7_2;
{Выполнил Кирдин М.Д., Вариант 9, Группа ФН12-11Б. Достать из двух заранее созданных текстовых файлов упорядоченные в порядке убывания числа, создать из них типизированный файл, после чего создать из значений в типизированном файле строку.}
uses sysutils;
type
Numbers = array of integer;
intf = file of integer;
Rcrd = record
Arr: Numbers;
Size: word;
end;
//запись для чисел из файлов
procedure readfile (Var filee_p: intf; Var fl_p: textFile; filename1_p, filename2_p: shortstring; Rcd_d: Rcrd);
var
x, y, z: integer;
begin
with Rcd_d do
begin
assignfile(filee_p, 'dat.dat');
assignFile (fl_p, filename1_p);
reset (fl_p);
rewrite(filee_p);
while not seekeof(fl_p) do
begin
readln (fl_p, x, y, z);
write (filee_p, x, y, z);
end;
//считываем числа в файле 1
closeFile (fl_p);
assignFile (fl_p, filename2_p);
reset (fl_p);
while not seekeof(fl_p) do
begin
readln (fl_p, x, y, z);
write (filee_p, x, y, z);
end;
//считываем числа в файле 2
closeFile (fl_p);
closefile (filee_p);
//создаём типизированный файл
end;
end;
procedure disp_fl(Var filee_d: intf);
var
intd: integer;
begin
write ('The resulting typed file contains: ');
assignfile(filee_d, 'dat.dat');
reset (filee_d);
while not eof (filee_d) do
begin
read (filee_d, intd);
write (intd, ‘ ‘);
end;
closeFile (filee_d);
//выводим значения из типизированного файла
readln;
end;
procedure comparator (var Rcd_c: Rcrd);
//процедура упорядочивает значения из текстовых файлов
var
i, k: word;
min: word;
//номер минимального значения
intermediate: integer;
//вспомогательная переменная
begin
with Rcd_c do
begin
for i := 0 to size do
begin
k := 0;
min := 0;
while (k <> (Size - i)) do
begin
k := k + 1;
if (Arr [min] > Arr [k]) then
begin
min := k;
end;
end;
intermediate := Arr [min];
Arr [min] := Arr [Size - i];
Arr [Size - i] := intermediate;
end;
end;
end;
procedure stringization (Var filee_d: intf; stroing_d: shortstring; Rcd_s: Rcrd);
var
i, k: word;
intd: integer;
//переменная, которой "достаются" значения из типизированного файла
inst: integer;
//вставляемое число
begin
with Rcd_s do
begin
writeln ('The string is:');
assignfile(filee_d, 'dat.dat');
reset (filee_d);
while not eof (filee_d) do
begin
read (filee_d, intd);
stroing_d := stroing_d + ' ' + IntToStr(intd);
end;
closeFile (filee_d);
writeln (trim (stroing_d));
//вывод не преобразованной строки
stroing_d := '';
//опустошаем значение строки
write ('Enter the number you want to insert: ');
readln (inst);
assignfile(filee_d, 'dat.dat');
reset (filee_d);
while not eof (filee_d) do
begin
Size := Size + 1;
setlength (Arr, Size);
read (filee_d, Arr [Size - 1]);
end;
Arr [Size] := inst;
comparator (Rcd_s);
for i := 0 to Size do
begin
stroing_d := stroing_d + ' ' + IntToStr(Arr[i]);
end;
closefile (filee_d);
writeln ('The resulting string is:');
writeln (trim (stroing_d));
//вывод преобразованной строки
readln;
end;
end;
var
fl: textFile;
filee: intf;
stroing: shortstring;
Rcd: Rcrd;
begin
repeat
readfile(filee, fl, 'C:\lazarus\code\File1.txt', 'C:\lazarus\code\File2.txt', Rcd);
disp_fl(filee);
stringization(filee, stroing, Rcd);
writeln('Want to Continue?');
readln(arg);
if (UpperCase(arg) = ‘N’) then
break;
clrscr;
until False;
end.
Скриншоты
Содержимое файлов. Их адрес заранее указан в программе
Создается типизированный файл dat.dat по указанному в коде адресу.