IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Перестановка массива
Amele
сообщение 18.05.2007 17:08
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Женский

Репутация: -  0  +


Плз, помогите решить задачу. Нужно оч срочно. Я над ней голову уже 2 недели ломаю, никак.
Переставить в обратном порядке элементы массива, расположенные между минимальным и максимальным элементами.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 18.05.2007 17:10
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Как делала то показывай ... Минимальный и максимальный находить умеешь ? Если нет, воспользуйся поиском, решалось много-много раз.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Amele
сообщение 18.05.2007 17:19
Сообщение #3





Группа: Пользователи
Сообщений: 6
Пол: Женский

Репутация: -  0  +


Вот я её попыталась решить:
Код
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.

Но почему-то не получается. В чем ошибки-то?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 18.05.2007 17:49
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Amele
сообщение 18.05.2007 18:14
Сообщение #5





Группа: Пользователи
Сообщений: 6
Пол: Женский

Репутация: -  0  +


Огромное спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tan
сообщение 18.05.2007 19:47
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


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, если бы речь шла об одном то по - идее было бы написано так :
Цитата
между минимальным и максимальным элементом
Возможно я перемудрил.


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 13:47
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"