![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Nikich500 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.11.2014 Репутация: нет Всего: нет |
Программа должна менять два соседних числа в массиве если у них разные знаки.
Смотрите next: там этот алгоритм.
По сути я сдесь взял знаки и если они совпадают то идем дальше а если не совпадают то меняем местами. НО почему то после выполнения программы в результате числа не меняются. Прошу помощи Добавлено через 5 минут и 6 секунд сделал по немножко другому алгоритму: next: Если a<0, то next1, иначе если (а+1)>=0, то пропускаем, иначе меняем местами. next1: Если (a+1)<0, то пропускаем, иначе меняем местами...
Однако сдесь в итоге у меня из массива=(3,-5,5,21,-3,9,0,11,-14,2) получился массив=(3,-5,5,21,9,-3,0,11,-14,2), получается что поменялись местами только -3 и 9... почему то остальные не меняются=(( |
||||
|
|||||
| ФедосеевПавел |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 2 Всего: 10 |
Можно попробовать проверять условие следующим образом:
if sign(a[si]) <> sign([si+1]) then обменять что эквивалентно if ( sign(a[si]) xor sign([si+1]) ) <> 0 then обменять Функция sign - это по-сути старший бит числа, т.е. sign(a[si]) = 10000000b and a[si]. В результате - меньше сравнений, меньше ветвлений, упрощается программа. ------------------------------------------------------ Sorry, невнимательно читал 1-ю программу. Я взял 1-й исходник, закоментировал 43-ю строку "loop restart" и перенёс определение стека в конец файла - почему-то забивались нулями первые байты массива в сегменте данных.
Это сообщение отредактировал(а) ФедосеевПавел - 23.11.2014, 08:18 |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |