Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Название темы должно адекватно отражать суть решаемой задачи/проблемы!
Старый 13.03.2013, 23:20   #1
Transcend
Пользователь
 
Регистрация: 13.03.2013
Сообщений: 10
По умолчанию assembler. Задан массив А из N чисел. Преобразовать этот массив так, чтобы сначала шли четные числа, а потом – нечетные

я совсем недавно изучаю assembler и столкнулся вот с такой задачей. Задан массив А из N чисел. Преобразовать этот массив так, чтобы сначала шли четные числа, а потом – нечетные.я думаю,что Более простой вариант – образовать новый массив В, в котором следуют сначала четные числа из массива А, потом – нечетные.
Помогите пожалуйста!
Transcend вне форума Ответить с цитированием
Старый 13.03.2013, 23:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

совершенно не обязательно.
Если не стоит задача сохранить взаимный порядок чисел, тогда можно и одним массивом легко обойтись, просто меняя элементы местами.
По сути, задача сводится к тому, чтобы найти индекс от начала массива первого нечётного элемента и от конца массива первого чётного элемента. Если Iнечет<Iчёт, тогда поменять элементы местами.
повторять, пока выполняется условие (есть нечётный элементв левее (ближе к началу массива) чётного).
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.03.2013, 00:24   #3
Transcend
Пользователь
 
Регистрация: 13.03.2013
Сообщений: 10
По умолчанию

остро стоит проблема с реализацией
Transcend вне форума Ответить с цитированием
Старый 14.03.2013, 08:33   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
остро стоит проблема с реализацией
тут всё просто:
вариант A. обращение во фриланс. быстро и хорошо, но с затратами в виде вашего вознаграждения.

вариант B. изучение ассемблера, чтение лекций, поиск похожих примеров, попытки решить, помощь форума, получение результата. Процесс однозначно не быстрый, но зато лучший в плане получения результата (в виде знаний в первую очередь) и, однозначно дешевле

вариант C. ничего не делать, ждать чуда, пока найдётся "добрый" дяденька и даст готовый код. С этим вариантом, тут уж как повезёт... может через 5 минут Вам выложат готовое решение (если у кого-то есть готовый код и ему не жаль им поделиться), а можно и не дождаться вовсе (на форуме полно тем, где автор так и не дождался халявы в виде готового кода)...

Выбирать - Вам.


p.s. начните с того, что ассемблеры - они совершенно разные, определяйтесь с тем, какой нужен Вам...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.03.2013, 10:13   #5
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Вот. Недавно делал, только сначала нечетные, а потом четные, наоборот переделаете сами
Код:
;Перенос нечетных элементов в начало массива
	lxi h,A	;указатель текущего элемента = адресу начала массива 
	mov d,h   	;указатель текущего нечетного элемента = адресу начала массива 
	mov e,l   	
        mvi b,1
	mvi c,N	;В – кол-во нечетных, С – счетчик элементов массива
m1:	mov a,m   	;взять очередной элемент
	ani 01    	;проверить четность
	jz m2     	;если четный – пропустить
	mov a,m   	;если нечетный, прочитать его еще раз
	push psw  	;обменять
	ldax d    	;текущий элемент
	mov m,a   	;с четным из начала массива
	pop psw   	;перенеся нечетный элемент в
	stax d    	;начало массива
	inx d     	;адрес следующего нечетного
	inr b     	;увеличить кол-во нечетных элементов
m2:	inx h     	;адрес следующего элемента
	dcr c     	;уменьшить счетчик элементов
	jnz m1    	;продолжать пока не 0
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 18.03.2013, 11:42   #6
Transcend
Пользователь
 
Регистрация: 13.03.2013
Сообщений: 10
По умолчанию

большое спасибо!
Transcend вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести сначала все его четные (нечетные) елементы, а потом- нечетные(четные). tondo Помощь студентам 4 25.04.2012 00:17
Создать динамический массив внутри функции так, чтобы он потом не уничтожился TwiX Общие вопросы Delphi 5 24.03.2012 23:04
Имеется строка из букв и цифр.Преобразовать так,чтобы сначала в ней шли все буквы,затем цифры Natalia91169 Помощь студентам 3 13.03.2012 09:00
Преобразовать массив таким образом, чтобы сначала располагались элементы из интервала [a,b] , а затем все parka Паскаль, Turbo Pascal, PascalABC.NET 7 15.05.2011 22:17
Массивы на pascal (преобразовать массив так, чтобы сначала были единицы, а потом - все остальные) Mercial Помощь студентам 6 18.02.2011 22:07