Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program lab6;
- {uses SysUtils;}
- const
- MAX_SIZE = 10;
- type tArray = array [1..MAX_SIZE] of integer;
- var
- a : tArray; //А - заданный массив
- n, u, max, npoz : integer;
- fin, fout : TextFile;
- procedure DataRead(var inFile : TextFile; var inN, inU : integer; var inA : tArray);
- var
- i : integer;
- begin
- if (ParamCount < 2) then
- begin
- writeln('Не заданы параметры программы');
- readln;
- exit;
- end;
- //открываем файл
- AssignFile(inFile, ParamStr(1));
- Reset(inFile);
- //ввод n
- readln(inFile, inN);
- //ввод массива
- i := 1;
- while (i <= inN) do
- begin
- readln(inFile, inA[i]);
- i := i + 1;
- end;
- //ввод u
- read(inFile, inU);
- CloseFile(inFile);
- end;
- procedure FindFirstPositive(var inNpoz : integer; const inN : integer; const inA : tArray);
- var
- i : integer;
- begin
- i := 1;
- inNpoz := 0;
- while (i <= inN) and (inNpoz = 0) do
- begin
- if (inA[i] > 0) then
- inNpoz := i;
- i := i + 1;
- end;
- end;
- procedure FindLowerU(var inMax : integer; const inNpoz, inN, inU : integer; const inA : tArray);
- var
- i : integer;
- begin
- // поиск 1 элемента, значение которого меньше u
- i := inNpoz + 1;
- inMax := 0;
- //ищем первый элемент, удов условию
- while (i <= inN) and (inMax = 0) do
- begin
- if (inA[i] < inU) then
- inMax := i;
- i := i + 1;
- end;
- end;
- procedure FindMax(var inMax : integer; const inN, inU : integer; const inA : tArray);
- var
- i : integer;
- begin
- i := inMax + 1;
- // ищем первый максимальный
- while (i <= inN) and (inMax <> 0) do
- begin
- if (inA[i] < inU) and (inA[inMax] < inA[i]) then
- inMax := i;
- i := i + 1;
- end;
- end;
- procedure DataWrite(var outFile : TextFile; const inMax, inNpoz, inN, inU: integer; const inA : tArray);
- var
- i : integer;
- begin
- AssignFile(outFile, ParamStr(2));
- Rewrite(outFile);
- //вывод введённых данных
- writeln(outFile, 'Лаб.6':40);
- writeln(outFile, 'Количество элементов массива = ', n);
- writeln(outFile, 'Введённые элементы:');
- i := 1;
- while (i <= inN) do
- begin
- write(outFile, inA[i], ' ');
- i := i + 1;
- end;
- writeln(outFile, 'Введенное значение U = ', inU);
- if (inNpoz = 0) then
- writeln(outFile, 'Невозможно найти U. В массиве нет положительных элементов')
- else
- if(inMax <> 0) then
- WriteLn(fout, 'Искомый номер: ', inMax)
- else
- begin
- WriteLn(fout, 'Невозможно найти U.');
- if(inNpoz <> inN) then
- WriteLn(fout, 'Все элементы после первого положительного больше U.');
- end;
- CloseFile(fout);
- end;
- begin
- max := 0;
- //ограничение: кол-во эл-в не превышает 10, абсолютное значение эл-в не превышает 10
- DataRead(fin, n, u, a);
- //поиск первого положительного
- FindFirstPositive(npoz, n, a);
- if(npoz <> 0) then
- begin
- FindLowerU(max, npoz, n, u, a);
- FindMax(max, n, u, a);
- end;
- DataWrite(fout, max, npoz, n, u, a);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement