![]() |
|
Модераторы: Poseidon |
![]()
|
|
| seven65 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.12.2006 Где: Санкт - Петербург Репутация: нет Всего: нет |
Написать программу на языке Ассемблер, в которой осуществляется обработка исходного массива (10 – 15 элементов) и формирование массива результата. Размерность элементов исходного массива и массива результата – WORD.
Действия для предварительной обработки элементов исходного массива выбирается из таблицы 1. Условия поэлементного формирования массива результата из таблицы 2. Выбор способов адресации выбирается из таблицы 3. 1) Способ обработки: В исходном массиве переставить элементы так, чтобы они располагались в следующем порядке. Отрицательные и положительные элементы исходного массива в порядке их расположения меняются местами. 2) Условия формирования массива результата. Элемент исходного массива помещается в массив результата если его значение: больше среднего арифметического наибольшего и последнего элемента исходного массива. После отладки программы изменить е+- для обработки данных размерности DWORD. 3) Способ адресации. Обработка исходного массива - индексная. Формирование массива результата - базовая. |
|||
|
||||
| anwe |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
По многочисленным просьбам сделал.
Программка делает то, что просил. Элементы исходного массива заданы произвольно так же, как и их количество. Среднее арифметическое вычислено с использованием целочисленной арифметики, вернее используется следующее свойство: среднее арифметическое двух целых чисел будет либо целым числом либо иметь дробную часть 5/10. В условии задачи написано, чтобы элементы нового массива были больше этого среднего арифметического. Поэтому целочисленной арифметики хватает. Пусть при делении на 2 получил 5,5, что в целочисленной арифметике означает частное равно 5 плюс какой-то остаток. Значит для удовлетворения условию задачи элемент должет быть просто больше 5 (ведь 6>5,5), значит применяемое условие будет "больше". Но это для положительных чисел. Для отрицательных не так. Пусть среднее арифметическое равно -5,5. Частное равно -5. Если возмешь -4, это будет верно, но также и -5>-5,5. Значит в случае с отрицательными числами надо брать не только большие, чем частное, но и числа равные частному. Значит применяемое условие будет "больше или равно". Чтобы такой отбор сделать в одном цикле, то есть использовать одно условие, надо "оттянуть" частное, если оно отрицательное, на 1 влево, то есть уменьшить его. Для этого примера получим частное -6. Тогда одно условие "больше" можно применить и для отрицательных и для положительных чисел. Это и делает часть кода
И последнее. Для преобразования исходного массива (и нового соответственно) в размер двойных слов надо: 1. Расширить все регистры размерности слова до двойного путем дабавления е. 2. Изменить 2->4. 3. Изменить 1->2, но только в делении. В командах inc и dec ничего не менять! 4. При определении знака добить еще 16 нулей. 5. Переделать блоки вывода массивов под размерность двойных слов (это еще одно сохранение, сдиг и восстановлени выводимого символа по подобию, как это уже сделано). 6. Заменить размерности массива, нового массива и знаков (не длинн). Сам код:
Здесь сам файл. Присоединённый файл ( Кол-во скачиваний: 30 )
PPP.COM 0,32 Kb |
||||
|
|||||
| seven65 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.12.2006 Где: Санкт - Петербург Репутация: нет Всего: нет |
Спасибо!!!
|
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |