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

> Правила раздела!

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

 
 Ответить  Открыть новую тему 
> Сортировка массива.
dff
сообщение 3.05.2011 18:25
Сообщение #1





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

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


Отсортировать элементы с нечетными значениями в порядке
– возрастания, если сумма элементов с четными значениями больше суммы эле-ментов с нечетными;
– убывания, если сумма элементов с четными значениями меньше суммы эле-ментов с нечетнымими.

Вопрос,как из массива выделить четные и нечетные элементы для дальнейшего сумирования?

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 3.05.2011 18:39
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

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


Будь внимательнее: элементы с нечетными значениями, или элементы с нечетными индексами? Обычно тут многие ошибаются...

Цитата
как из массива выделить четные и нечетные элементы для дальнейшего сумирования?
А не надо ничего выделять. Заводи два счетчика: один для четных значений, другой - для нечетных. А потом проходи по массиву циклом и суммируй элементы. Четность элементов проверяется любым из способов: либо (a[ i ] and 1 = 0), либо (a[ i ] mod 2 = 0), можно и так: not odd(a[ i ]). И добавляй, в зависимости от выполнения условия, либо к одному счетчику, либо к другому.

В поиске, кстати, можно поискать, реализация подобной сортировки мной выкладывалась. Как минимум один раз; может, кто-то еще свою постил - не помню.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-TarasBer-
сообщение 3.05.2011 19:18
Сообщение #3


Гость






> – возрастания, если сумма элементов с четными значениями больше суммы эле-ментов с нечетными;
> – убывания, если сумма элементов с четными значениями меньше суммы эле-ментов с нечетнымими.

А если равно?
 К началу страницы 
+ Ответить 
dff
сообщение 3.05.2011 19:26
Сообщение #4





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

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


ну циклом например

for i:=1 to N do
begin
if odd(i) then a:=b{нечет}
else a:=c{чет};
b:=b+1;
c:=c+1

end;


как то так?



Добавлено через 1 мин.
Цитата(-TarasBer- @ 3.05.2011 19:18) *

> – возрастания, если сумма элементов с четными значениями больше суммы эле-ментов с нечетными;
> – убывания, если сумма элементов с четными значениями меньше суммы эле-ментов с нечетнымими.

А если равно?


не сортировать

Сообщение отредактировано: dff - 3.05.2011 19:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 3.05.2011 21:08
Сообщение #5


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

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


Цитата
как то так?
Лучше - вот так:

s_even := 0;  // сумма четных
s_odd := 0; // сумма нечетных
for i := 1 to n do
if odd(a[ i ]) then // нечетный элемент ?
s_odd := s_odd + a[ i ]
else
s_even := s_even + a[ i ];
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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