Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба 10 вар 9 / Лаба 10

.docx
Скачиваний:
6
Добавлен:
18.07.2019
Размер:
142.73 Кб
Скачать

Санкт-Петербургский политехнический университет Петра Великого

Институт Металлургии, Машиностроения и Транспорта

Кафедра «Компьютерные Технологии и Машиностроения»

Отчет

По лабораторной работе №10

Дисциплина: «Информатика»

Тема: «Внешние файлы» Вариант - 9

Студент гр. 13332/1 Лебедев А.В.

Преподаватель Ю. В. Кожанова

«__»______________2018

Санкт-Петербург

2018г.

Цель работы

Цель работы приобретение умений построения конструкций контроля вводимых числовых данных пользователем.

Задание Найти наибольший элемент, получив данные из файла, указать его положение, записать полученные данные в файл.

Ход работы

Алгоритм программы

Рис.1 – Блок-схема

Программный код:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

btn1: TBitBtn;

procedure btn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);

var f1,f2:textfile; i, j, m, k:byte; x:array of array of Integer; y:array of byte;

BEGIN

If OpenDialog1.Execute Then //если файл выбран в окне открытия файла

Begin

AssignFile(f1, OpenDialog1.FileName); //связать его с переменной f1

{$I-} Reset(f1); {$I+} //открыть файл, связанный с f1 для чтения

if IOresult <>0 then begin ShowMessage('Файл не найден'); Exit; end;

End

Else Begin ShowMessage('файл для чтения не выбран'); Exit; End;

if eof(f1) then begin ShowMessage(' файл пуст'); Closefile(f1); Exit; end;

i:=0; //начальное значение номера строки

while not eof(f1) do //пока не достигнут конец файла

Begin //начало тела внешнего цикла

SetLength(x, i+1); //выделение (добавл.) памяти под одну строку массива x

SetLength(y, i+1); //выделение (добавл.) памяти под один элемент массива y

j:=0; //начальное значение номера столбца (номера элемента в строке)

while not eoln(f1) do //пока не достигнут конец строки

begin //начало тела вложенного цикла

SetLength(x[i], j+1); //выделение памяти под один эл-нт в i-ой строке

{$I-} Read(f1, x[i,j]); {$I+} //чтение (ввод) xij элемента из файла

if IOResult <>0 then begin

ShowMessage('Ошибка син-са'); CloseFile(f1);

SetLength(x, 0, 0); SetLength(y, 0); Exit;

end;

j:=j+1; //переход к следующему столбцу в i-ой строке

end; //конец тела вложенного цикла

y[i]:=j; //запись в массив y длины i-ой строки

i:=i+1; //переход к следующей строке

Readln(f1); //перевод строки чтения в файле чтения

End; //конец тела внешнего цикла

CloseFile(f1); //закрытие файла чтения

m:=i; //число строк получает значение числа итераций внешнего цикла

If SaveDialog1.Execute Then //если файл выбран в окне сохранения

Begin

AssignFile(f2,SaveDialog1.FileName); //связать его с переменной f2

{$I-} Rewrite(f2); {$I+} //открыть файл, связанный с f2 для записи

if IOResult <>0 then begin ShowMessage('Ошибка доступа'); Exit; end;

End

Else Begin ShowMessage('Файл записи не выбран'); Exit; End;

i:=0; //начальное значение номера строки135

Begin //начало тела внешнего цикла

k:=0;

j:=0; //начальное значение номера столбца (номера элемента в строке)

while j <= y[i]-1 do //пока не исчерпаны все элементы i-ой строки

begin //начало тела вложенного цикла

k:=k+1; //запись в файл квадрата элемента в формате

j:=j+1; //переход к следующему столбцу 5:2 с пробелом

end; //конец тела вложенного цикла

i:=i+1; //переход к следующей строке вывода

Write(f2, k,' ');

Writeln(f2); //перевод строки записи в файле

End; //конец тела внешнего цикла

CloseFile(f2); //закрытие файла записи

SetLength(x, 0, 0); //высвоб. памяти из-под двумерного массива элементов

SetLength(y, 0); //высвоб. памяти из-под одномерного массива длин строк

END; //конец процедуры

Файл записи и вывода представлены на рисунке 2.1 и 2.2.

Рис 2.1 – файл записи Рис 2.2 – файл вывода

Соседние файлы в папке Лаба 10 вар 9
  • #
    18.07.2019876 б4Project1.res
  • #
    18.07.20196.81 Кб4Unit1.dcu
  • #
    18.07.201951 б4Unit1.ddp
  • #
    18.07.20191.21 Кб5Unit1.dfm
  • #
    18.07.20192.88 Кб5Unit1.pas
  • #
    18.07.2019142.73 Кб6Лаба 10.docx