Задание: 1) в векторе найти макс. и мин. элементы.
2) элементы между макс. и мин. элементами поменять местами (первый с последним, 2ой с предпоследним и т.д.) - так называемый "поплавок". Например:
входной вектор: 123456789
мин.=1 макс.=9
выходной вектор: 187654329
помогите со вторым заданием, пожалуйста - не всегда правильно выводит
очень нужна помощь - задание нужно сделать до завтра
Вот код:
uses crt;
Const nmax = 100;
Var temp, k, r,
v_min, v_max,
max, min,
i_max,i_min,
i, j, n: Integer;
mas : Array [1..nmax] Of Integer;
Begin
write('Vhodnye dannye dly n=');
readln(n);
Write('v_min= ');
ReadLn(v_min);
Write('v_max= ');
ReadLn(v_max);
WriteLn;
WriteLn('Ishodny vector:');
randomize;
for i:=1 to n do
begin
mas[i]:=random(v_max-v_min+1)+v_min;
write(mas[i]:4);
end;
WriteLn;
max:=mas[1];
i_max:=1;
For i:=1 To n Do
If (mas[i]>max) Then
Begin
max:=mas[i];
i_max:=i;
End;
min:=mas[1];
i_min:=1;
for i:=1 to n do
If (mas[i]<min) Then
Begin
min:=mas[i];
i_min:=i;
End;
writeln;
WriteLn('Max chislo=',max, ' index:',i_max);
WriteLn('Min chislo=',min, ' index:',i_min);
WriteLn;
r:=i_min-i_max;
k:=abs(r);
write('длина между max и min=',k);
writeln;
if i_max>i_min then
begin
for i:=i_min+1 to (i_min+(k div 2)) do
begin
temp:=mas[i];
mas[i]:=mas[i_max-i+1];{ошибка скорее всего здесь}
mas[i_max-i+1]:=temp;
end;
end;
if i_max<i_min then
begin
for i:=i_max+1 to (i_max+(k div 2)) do
begin
temp:=mas[i];
mas[i]:=mas[i_min-i+1];{ошибка скорее всего здесь}
mas[i_min-i+1]:=temp;
end;
end;
For i:=1 to n do
write(mas[i]:4);
writeln;
readln;
end.