Практическая работа 15
Задание: необходимо разработать программу, которая может записывать массив в файл и считывать его из файла, а так же выполнять следующую операцию: перестановку заданных строк массива. Массив должен быть безграничным. Пользователь задает строки и столбцы.
Ход работы:
Листинг программы:
var
Form1: TForm1;
i, j, x, y, s, k: integer;
f: TextFile;
fName, str: string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
fName := Edit3.Text;
AssignFile(f, fName);
Reset(f);
Readln(f, s);
Readln(f, k);
x := s;
y := k;
i := 0;
j := 0;
StringGrid1.ColCount := k;
StringGrid1.RowCount := s;
while (not Eof(f)) do
begin
if (j < y) then
begin
Readln(f, str);
StringGrid1.Cells[j, i] := str;
j := j + 1;
end
else
begin
j := 0;
i := i + 1;
end;
end;
CloseFile(f);
MessageDlg('Данные загружены из файла ' + Edit3.Text, mtInformation,
[mbOk], 0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
fName := Edit3.Text;
AssignFile(f, fName);
Rewrite(f);
writeln(f, Edit1.Text);
writeln(f, Edit2.Text);
for i := 0 to StrToInt(Edit1.Text) - 1 do
begin
for j := 0 to StrToInt(Edit2.Text) - 1 do
begin
writeln(f, StringGrid1.Cells[j, i]);
end;
end;
CloseFile(f);
for i := 0 to StrToInt(Edit1.Text) do
begin
for j := 0 to StrToInt(Edit2.Text) do
begin
StringGrid1.Cells[j, i] := '';
end;
end;
MessageDlg('Данные сохранены в файл ' + Edit3.Text, mtInformation, [mbOk], 0);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if (Edit1.Text > '0') and (Edit2.Text > '0') then
begin
x := StrToInt(Edit1.Text);
y := StrToInt(Edit2.Text);
StringGrid1.RowCount := x;
StringGrid1.ColCount := y;
end
else
begin
Edit1.Text := '0';
Edit2.Text := '0';
end;
for i := 0 to StrToInt(Edit1.Text) do
begin
for j := 0 to StrToInt(Edit2.Text) do
begin
StringGrid1.Cells[j, i] := '';
end;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
for i := 0 to x - 1 do
begin
for j := 0 to y - 1 do
begin
StringGrid1.Cells[j, i] := IntToStr(RandomRange(-99, 100));
end;
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
for i := 0 to StrToInt(Edit2.Text) - 1 do
begin
str := StringGrid1.Cells[i, StrToInt(Edit4.Text) - 1];
StringGrid1.Cells[i, StrToInt(Edit4.Text) - 1] := StringGrid1.Cells
[i, StrToInt(Edit5.Text) - 1];
StringGrid1.Cells[i, StrToInt(Edit5.Text) - 1] := str;
end;
end;
Данная программа состоит из 5 процедур. Процедура TForm1.Button1Click, которая запускается нажатием кнопки Открыть (Загрузить) (Button1), загружает данные из файла. Процедура TForm1.Button2Click, которая запускается нажатием кнопки Сохранить (Записать) (Button2), сохраняет данные в файл. При нажатии на кнопку Создать (Button3), запускается процедура TForm1.Button3Click, которая задает массив с указанными в полях Edit1.Text и Edit2.Text значениями. TForm1.Button4Click запускается при нажатии на кнопку Заполнить (Button4), она заполняет массив случайными числами в диапазоне от -99 до 99. При нажатии на кнопку Поменять строки местами (Button5), запускается процедура TForm1.Button5Click, которая меняет 2 строки местами, заданные пользователем.
Блок-схемы этих процедур представлены на рисунке 15.1, 15.2, 15.3, 15.4, 15.5 соответственно.
Рисунок 15.1 - Блок-схема программы. Обработка события нажатия на кнопку Button1
Рисунок 15.2 - Блок-схема программы. Обработка события нажатия на кнопку Button2.
Рисунок 15.3 - Блок-схема программы. Обработка события нажатия на кнопку Button3
Рисунок 15.4 - Блок-схема. Обработка события нажатием на кнопку Button4
Рисунок 15.5 - Блок-схема программы. Обработка события нажатия на кнопку Button5
Сохранение массива в файл представлено на рисунке 15.6
Рисунок 15.6 - Выполнение программы. Сохранение массива в файл
Загрузка массива из файла представлена на рисунке 15.7
Рисунок 15.7 - Выполнение программы. Загрузка массива из файла
Замена строк местами представлена на рисунке 15.8
Рисунок 15.8 - Выполнение программы. Замена строк местами.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.