Дан массив X(N) (N<=60) причём кол-во элементов кратно 3. Разбить массив на 3 части и в каждой поменять наибольший элемент с наименьшим
мисс_граффити
27.10.2006 18:40
что не получается? что пробовал?
Slipknot
27.10.2006 20:07
У меня напряг как раз с этим РАЗБИТИЕМ
Reflex
27.10.2006 20:13
Кхм... странно казалось бы разбивать то и не надо просто хранишь начало первого и последнего члена нужной части
Slipknot
27.10.2006 20:15
Ну так как найти концы этих частей ?
Reflex
27.10.2006 20:18
ну смотри у тебя в массиве 3n элементов тогда первая часть - 0_n-1, вторая- n_2n-1, третья 2n_3n-1
мисс_граффити
27.10.2006 20:18
количество элементов ты знаешь => можешь посчитать, сколько будет в каждой части. допустим, у нас 9 элементов, в каждой части по три. первая часть (индексы): 1,2,3. вторая часть: 4,5,6. третья: 7,8,9. то есть хранить надо 4 и 7. а еще лучше - хранить только размер каждой части.
Reflex
27.10.2006 20:19
помоему массив удобнее в этом случае с 0 номеровать
Slipknot
27.10.2006 20:21
Размер каждой части - это круто, ну допустим их там девять эл-тов - размер части 3, их - 60 размер части - 20 и как же это по вашему в проге рассчитать?
Reflex
27.10.2006 20:26
пусть n - количество элементов размер части равен n div 3 значит первый элемент первой части - 0 последний элемент первой n div 3 - 1 второй - n div 3 => 2*(n div 3)-1 третmей 2*(n div 3)=> n-1
Reflex
27.10.2006 20:40
program Slipknot
var x : array [ 1..60 ] of integer;
n : integer;
size : integer;
min, min_id, max, max_id : integer;
procedure change(st, f : integer);
var i : integer;
begin
min_id:=st;
max_id:=st;
for i:= st to f dobeginif x[i]>x[max_id] then max_id:=i;
if x[i]<x[min_id] then min_id:=i;
end;
i:=x[min_id];
x[min_id]:=x[max_id];
x[max_id]:=i;
end;
var i:integer;
beginread(n);
for i:= 1to n doread(x[i]);
size:=n div3;
change(1,size);
change(size+1, 2*size);
change(2*size+1,n);
for i:= 1to n dowrite(x[i],' ');
readln;
readln;
end.
Вот готовый код, откомментируй его.
volvo
27.10.2006 21:07
Цитата
Вот готовый код, откомментируй его.
Хочешь, я откомментирую? Он нерабочий:
Цитата
6 1 2 3 4 5 6 2 1 4 3 6 5
Последнее китайское предупреждение: Будь добра проверять программы ПЕРЕД выкладыванием на форум...
Malice
27.10.2006 21:16
Цитата(volvo @ 27.10.2006 22:07)
Хочешь, я откомментирую? Он нерабочий:
А почему, извините ? Вроде все ок. 123456 - -> [12][34][56] -> поменяли мин и мах ->[21][43][65]. Так и есть.. Ps Не, ну наплел конечно, но работает ;) pps шутка
Slipknot
27.10.2006 22:04
Спасибо Всё работает замечательно
Reflex
28.10.2006 0:11
Volvo читай условие внимательно!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.