| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Алгоритм, ассемблер] Помогите с алгоритмом |
| Автор: Alexander_Veselov 18.5.2007, 09:58 |
| Пользователь вводит последовательность K целых чисел с клавиатуры.Если ни одно четное число не расположено после нечетного,то получить все отрицательные члены последовательности,в противном случае все положительные.Порядок следования чисел в обоих случаях заменить на обратный. Помогите пожалуйста с алгоритмом!!!! Нужно потом написать програмку на Ассемблере. |
| Автор: MaXL 18.5.2007, 13:33 | ||
| А есть ли какие ограничения(ну там по времени или ещё почему)? Я вижу только самое простое: исходя из условия я понимаю что, для того чтобы выполнялось условие "ни одно четное число не расположено после нечетного" то чётные числа должны идти только в начале строки, и если встретился хоть один нечётный, то потом просто проверить если дальше встретиться хоть один нечётный, то вывести все положительные иначе все отрицательные. Для того чтобы проверить чётность можно использовать деление по модулю на два, и если результат единица, то тогда числе не чётное, если результат нуль то число чётное. Вот применрно вот так:
Ну вот вроде бы так, код может быть и не рабочий...но смысл примерно такой. А на асме уже сам напишешь. |
| Автор: jhane 18.5.2007, 14:20 |
| Запомни знак 1-го числа. Если не четное (проверяеш последний бит, LSD) бежиш в цыкле до четного, или до конца ввода. Пригаеш в фунцию, которая проверит не конец ли это ввода (если да, и был скочек, то тоже напечатает), если конец, печатаеш отрицательные. А в прошлом варианте, выведеш на печать несколько раз, если было несколько скачков. |
| Автор: MaXL 18.5.2007, 15:23 |
| jhane, ну да, это легко исправить, просто добавить break после вызово этих двух функций. |
| Автор: Azar3 15.12.2007, 23:58 |
| Если кто работал с СМ 1800 помогите составить программу : 2. Задача для разработки алгоритма и программной реализации на Эмуляторе микро-ЭВМ СМ-1800 Пользуясь программой-монитором, занести в память ЭВМ, начиная с адреса 500016, следующий массив из 10 шестнадцатиразрядных констант: Адрес16 Константа16 5000 00 57 5002 61 FF 5004 10 35 5006 80 40 5008 0A C0 500A 00 00 500C FF FF 500E 12 9A 5010 02 07 5012 0A 8D Будем рассматривать их как целые двухбайтные числа со знаком в дополнительном коде (1+15). Причем в младшем адресе хранится младший байт числа, а в старшем адресе – старший байт числа (например, 5000 – 00, 5001 – 5716, т.е. это на самом деле положительное число +5700). Составить программу, отыскивающую отрицательные числа в исходном массиве (с адреса 500016) и формирующую новый массив модулей (целые положительные числа) этих чисел с адреса 700016. В ячейке 600016 выдавать количество найденных отрицательных чисел. Программу располагать в памяти с ячейки 400016. |