Изменить программу так что-бы она определяла вторые по значению минимальное и максимальное числа и их позиции в файле(она определяет минимальное и максимальное числа и их позиции в файле) .
Код:
Var i, max, i_max, min, i_min, k, n1, n2, d: Integer;
chisla : File Of Integer;
Begin
Assign(chisla, 'D:\chisla.dat');
ReWrite(chisla);
Write('Введите первое число:');
ReadLn(i);
If (i=0) Then
Begin
WriteLn('Файл не создан');
Erase(chisla);
Exit;
End
Else Write(chisla, i);
Repeat
Write('Очередное число:');
ReadLn(i);
If (i<>0) Then
Write(chisla, i)
Else
Break;
Until (i=0);
max1:=0;
min1:=0;
i_max1:=1;
i_min1:=1;
ReSet(chisla);
WriteLn;
WriteLn('числа, записанные в файле:');
While (Not(EOF(chisla))) Do
Begin
Read(chisla, i);
Write(i:5);
If (max = 0) And (min = 0) Then
Begin
max:=i;
min:=i;
End;
If (i > max) Then
Begin
max:=i;
i_max:=FilePos(chisla);
End;
If (i < min) Then
Begin
min:=i;
i_min:=FilePos(chisla);
End;
End;
WriteLn;
If (max <> min) Then
Begin
WriteLn;
WriteLn('max=', max, ' i_max=', i_max);
WriteLn('min=', min, ' i_min=', i_min);
WriteLn;
n1:=i_min;
n2:=i_max;
If (i_max < i_min) Then
Begin
n1:=i_max;
n2:=i_min;
End;
d:=Filesize(chisla);
i:=0;
Repeat
Seek(chisla, n2+i-1);
Read(chisla, k);
Seek(chisla ,n1+i);
Write(chisla, k);
i:=i+1;
Until(n2+i-1 = d);
Seek(chisla, d-(n2-n1)+1);
Truncate(chisla);
Reset(chisla);
WriteLn('Измененный файл:');
While (Not(Eof(chisla))) Do
Begin
Read(chisla,k);
Write(k:5);
End;
End
Else
WriteLn('Нет максимального и минимального чисел');
Close(chisla);
ReadLn;
End.