Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program laba22;
- {$APPTYPE CONSOLE}
- uses
- SysUtils,
- Windows;
- const
- Max = 2147483647;
- Min = - 2147483647;
- type
- MyArray = array of Integer;
- //процедура для нахождения двух новых последовательностей
- procedure newArrays (var newFirst, newSecond: MyArray; firstArr, secondArr: MyArray; n:Integer);
- var
- i:Integer;
- begin
- for i := 0 to n-1 do
- if firstArr[i] > secondArr[i] then
- begin
- newFirst[i] := firstArr[i];
- newSecond[i] := secondArr[i];
- end
- else
- begin
- newFirst[i] := secondArr[i];
- newSecond[i] := firstArr[i];
- end;
- end;
- //процедура для проверки правильности имени файла
- procedure enterCorrectName (var fileName: String);
- var
- correctName: Boolean;
- begin
- repeat
- begin
- readln(fileName);
- if FileExists(fileName) then
- correctName := True
- else
- begin
- Writeln('Имя файла было введено некорректно. Попробуйте еще раз.');
- correctName := False;
- end;
- end;
- until correctName;
- end;
- // процедура проверяет ошибки, связанные с чтением из файла (в том числе, пустой файл или нет)
- procedure resetMyFile (var input: TextFile);
- var
- fileName:String;
- begin
- try
- reset(input);
- if Eof (input) then
- begin
- writeln('Файл пустой. Откройте другой файл');
- enterCorrectName(fileName);
- assignFile(input, fileName);
- resetMyFile(input);
- end;
- except
- writeln('Не удается открыть файл для чтения. Откройте другой файл');
- enterCorrectName(fileName);
- assignFile(input, fileName);
- resetMyFile(input);
- end;
- end;
- //Процедура для вывода массива на экран и записи в файл
- procedure output(var newFirst, newSecond: MyArray; n: Integer);
- var
- i: Integer;
- output: TextFile;
- begin
- writeln('Результат выполнения программы: ');
- assignFile(Output, 'output.txt');
- rewrite(Output);
- i := 0;
- while i < n do
- begin
- write(newFirst[i], ' ');
- write(Output, newFirst[i], ' ');
- inc(i);
- end;
- writeln(' ');
- writeln(output, ' ');
- i := 0;
- while i < n do
- begin
- write(newSecond[i], ' ');
- write(Output, newSecond[i], ' ');
- inc(i);
- end;
- closeFile(Output);
- end;
- //функция для чтения целых чисел из файла
- function readNumberFromFile(var input: TextFile; var fileName: String; var isValidInput: Boolean; isPositive: Boolean): Integer;
- var
- n: Integer;
- begin
- try
- read(input, n);
- if (n < 0) and isPositive then
- begin
- writeln('Данное число не может быть отрицательным. Нужно изменить данные в файле или открыть другой файл');
- isValidInput := false;
- end;
- except
- writeln('В файле некорректная верхняя граница. Нужно изменить данные в файле или открыть другой файл');
- isValidInput := false;
- end;
- readNumberFromFile := n
- end;
- var
- firstArr, secondArr, newFirst, newSecond: MyArray;
- n, i: Integer;
- input: TextFile;
- fileName: String;
- isValidInput: Boolean;
- begin
- setConsoleCP(1251);
- setConsoleOutputCP(1251);
- writeln('Данная программа формирует две новые последовательности из заданных, элементы которых вычисляются по следующему правилу: ai = max(ai,bi), bi = min(ai,bi)');
- writeln('Введите имя файла, в котором находятся данные');
- repeat
- isValidInput := true;
- enterCorrectName(fileName);
- assignFile(input, fileName);
- resetMyFile(input);
- n := readNumberFromFile(input, fileName,isValidInput, true);
- setlength(firstArr, n);
- setLength(secondArr, n);
- setlength(newFirst, n);
- setLength(newSecond, n);
- for i := 0 to n-1 do
- firstArr[i] := readNumberFromFile(input, fileName,isValidInput, false);
- for i := 0 to n-1 do
- secondArr[i] := readNumberFromFile(input, fileName,isValidInput, false);
- closeFile(input);
- until isValidInput;
- newArrays(newFirst, newSecond,firstArr, secondArr, n);
- output (newFirst, newSecond, n);
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement