Показать сообщение отдельно
  #3  
Старый 01.11.2011, 21:37
Аватар для DelphiM0ZG
DelphiM0ZG DelphiM0ZG вне форума
Новичок
 
Регистрация: 22.10.2011
Сообщения: 62
Репутация: 666
По умолчанию

У меня получилось так. Можно обойтись и без дополнительного массива, но как пример, думаю, что этого будет достаточно.

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Const
  N0=20;

Type
  Massif=Array[0..N0-1] Of Integer;

Var
  Mas, Masf: Massif;
  a: Integer;
  i, N, MinInd, MaxInd: Byte;

begin

  Repeat
    Write('Razmer (2<N<20): N = ');
    ReadLn(N);
  Until ((N>2) And (N<=20));

  WriteLn;
  WriteLn('Ishodnyi massiv:');
  WriteLn;
  Randomize;
  For i:=0 To N-1 Do
    Begin
      Mas[i]:=Random(1000)-Random(1000);
      WriteLn('Mas[', i+1, '] = ', Mas[i]);
    End;

  MinInd:=0;
  MaxInd:=0;
  For i:=0 To N-1 Do
    Begin
      If (Mas[MinInd]>Mas[i]) Then
        MinInd:=i;
      If (Mas[MaxInd]<Mas[i]) Then
        MaxInd:=i;
    End;

  WriteLn;
  WriteLn('----------------');
  WriteLn;

  WriteLn('Min = ', Mas[MinInd]);
  WriteLn('Max = ', Mas[MaxInd]);

  WriteLn;
  WriteLn('Poluchennyi massiv:');
  WriteLn;

  If (Abs(MaxInd-MinInd)<=2) Then
    WriteLn('Mejdu minimalnym i maksimalnym elementami perestavlyat nechego!')
  Else If (MaxInd>MinInd) Then
    Begin
      For i:=MinInd+1 To MaxInd-1 Do
        Masf[i]:=Mas[i];
      For i:=MinInd+1 To MaxInd-1 Do
        Mas[MaxInd-i+MinInd]:=Masf[i];
    End
  Else If (MaxInd<MinInd) Then
    Begin
      For i:=MaxInd+1 To MinInd-1 Do
        Masf[i]:=Mas[i];
      For i:=MaxInd+1 To MinInd-1 Do
        Mas[MinInd-i+MaxInd]:=Masf[i];
    End;

  For i:=0 To N-1 Do
    WriteLn('Mas[', i+1, '] = ', Mas[i]);

  ReadLn;
end.
Ответить с цитированием