Program Ex_12_1;
Uses Crt;
Label A;
Var f2: file of integer;
x: integer; {компонента}
i: integer; {счетчик цикла}
S: integer; {сумма}
Max: integer; {максимум}
k: integer; {номер максимума}
Begin
ClrScr;
Randomize;
Assign(f2, ‘g:\f2.dat’);
{Запись чисел в файл}
Rewrite(f2);
Writeln(‘Исходный файл:’);
Writeln;
For i:=0 to 15 do begin
x:=random(100)-50;
Write(f2, x);
Write(x:3);
End;
{Подсчет суммы нечетных компонент}
Reset(f2);
For i:=0to 15 do begin
Read(f2, x);
If x mod 2<>0 then
S:=S+x;
End;
{Примем первую компоненту за Max}
Reset(f2);
Read(f2, x);
Max:=x;
{Поиск Max в файле}
For i:=1 to 15 do begin
Read(f2, x);
If x>Max then begin
Max:=x;
k:=i
End;
{Запись суммы вместо Max в файле}
Seek(f2, k);
Write(f2, S);
{Вывод результатов}
Writeln(‘Измененный файл:’);
Writeln;
Reset(f2);
While not Eof(f2) do begin
Read(f2, x);
Write(x:3);
End;
Close(f2);
Readln;
End.
Задача 13.2.
Найти первое отрицательное и последнее отрицательное значения среди компонент типизированного файла, и поменять местами эти компоненты в файле. Найти произведение компонент файла, стоящих между первым отрицательным и последним отрицательным значением.
Текст программы к задаче 13.2.
Program Ex_12_2;
Uses Crt;
Label A ;
Var
f1: file of integer;
x: integer; {компонента}
Otr1, Otr2: integer; {отрицательные}
k1, k2: integer; {номера отриц.}
i: integer; {счетчик цикла}
Begin
ClrScr;
Randomize;
Assign(f1, ‘g:\f1.dat’);
{Запись чисел в файл}
Rewrite(f1);
Writeln(‘Исходный файл:’);
Writeln;
For i:=0 to 15 do begin
x:=random(100)-50;
Write(f1, x);
Write(x:3);
End;
{Поиск первого отрицательного}
Reset(f1);
For i:=0to 15 do begin
Read(f1, x);
If x<0 then begin
Otr1:=x;
k1:=i;
Goto A ;
{Как только нашли, выходим из цикла}
End;
End;
{Поиск последнего отрицательного}
A: Reset(f1);
For i:=0to 15 do begin
Read(f1, x);
If x<0 then begin
Otr2:=x;
k2:=i;
End;
End;
{Обмен в файле значений местами }
Seek(f1, k1);
Write(f1, Otr2);
Seek(f1, k2);
Write(f1, Otr1);
{Подсчет суммы ком. между k1 и k2}
i:=k1+1;
Repeat
Seek(f1, i);
Read(f1,x);
S:=S+x;
i:=i+1;
Until i<k2;
{Вывод результатов}
Writeln(‘Измененный файл:’);
Writeln;
Reset(f1);
While not Eof(f1) do begin
Read(f1, x);
Write(x:3);
End;
Close(f1);
Readln;
End.
Схема программы к задаче 13.2