Помощь - Поиск - Пользователи - Календарь
Полная версия: Перестановка массива
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Amele
Плз, помогите решить задачу. Нужно оч срочно. Я над ней голову уже 2 недели ломаю, никак.
Переставить в обратном порядке элементы массива, расположенные между минимальным и максимальным элементами.


klem4
Как делала то показывай ... Минимальный и максимальный находить умеешь ? Если нет, воспользуйся поиском, решалось много-много раз.
Amele
Вот я её попыталась решить:
Код
program rtt;
var a:array  [1..10] of integer;
i,max,min,k,b,k1,c,v,d:integer;f:char;
begin
for i:= 1 to 10 do begin
readln(a[i]);
end;
max:=a[1]; k:=1;  c:=0; v:=0;
min:=a[1]; k1:=1;
for i:= 1 to 10 do begin
if a[i]<min then begin min:=a[i]; k:=i end;
if a[i]>max then begin max:=a[i]; k1:=i end;
end;
if (k1 mod 2=0) and (k<k1) then c:=k1 div 2
if (k1 mod 2<>0) and (k<k1) then c:=(k1-1) div 2;
If (k mod 2=0) and (k1<k) then v:=k div 2
If (k mod 2<>0) and (k1<k) then  v:=(k-1) div 2;
for i:= k to c do begin
b:=a[k+i]; a[k+i]:=a[k1-i]; a[k1-i]:=b;
end;
for i:= k1 to v do begin
d:=a[k1+i]; a[k1+i]:=a[k-i]; a[k-i]:=d;
end;
for i:= 1 to 10 do begin
write(a[i]:3);
end;
readln(f);
end.

Но почему-то не получается. В чем ошибки-то?
klem4
uses crt;
const
n = 10;

var
x: Array [1..n] of Integer;
i, nMin, nMax, T: Integer;

begin
clrscr;

for i := 1 to n do begin
write('x[', i, '] = '); readln(x[i]);
end;

nMin := 1; nMax := 1;

for i := 2 to n do begin
if x[i] > x[nMax] then nMax := i;
if x[i] < x[nMin] then nMin := i;
end;

if nMax < nMin then begin
T := nMin; nMin := nMax; nMax := T;
end;

clrscr;

for i := 1 to n do write(x[i]:4);

inc(nMin); dec(nMax);


for i := nMin to nMin + (nMax - nMin) div 2 do begin
T := x[i];
x[i] := x[nMax - i + nMin];
x[nMax - i + nMin] := T;
end;

writeln;
for i := 1 to n do write(x[i]:4);

readln;
end.
Amele
Огромное спасибо.
Tan
Amele, но решение klem4 верно только если вам надо найти первый интервал на векторе. То есть код ищет первый Мах Мin или Min Max интервал и меняет порядок в нём, но если вам надо чтобы на всех возможных интервалах удовлетворяющих условию задания порядок менялся, надо доделывать. То есть вариант 1 2 3 10 4 5 6 7 8 1 выдаст 1 3 2 10 4 5 6 7 8 1, хотя по идее ответ 1 3 2 10 8 7 6 5 4 1 будет правильнее. Вообще если лексически рассмотреть вопрос, то фраза
Цитата
между минимальным и максимальным элементами.
подразумевает, что интервалов может быть больше 1, если бы речь шла об одном то по - идее было бы написано так :
Цитата
между минимальным и максимальным элементом
Возможно я перемудрил.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.