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