
01.11.2011, 21:37
|
 |
Новичок
|
|
Регистрация: 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.
|