Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 517447

Определение вторых по значению минимального и максимального числа и их позиций в файле - PascalABC.NET

$
0
0
Изменить программу так что-бы она определяла вторые по значению минимальное и максимальное числа и их позиции в файле(она определяет минимальное и максимальное числа и их позиции в файле) .
Код:

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.


Viewing all articles
Browse latest Browse all 517447

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>