Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Алгоритм, ассемблер] Помогите с алгоритмом 
:(
    Опции темы
Alexander_Veselov
Дата 18.5.2007, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.4.2007
Где: Саратов

Репутация: нет
Всего: нет



Пользователь вводит последовательность K целых чисел с клавиатуры.Если ни одно четное число не расположено после нечетного,то получить все отрицательные члены последовательности,в противном случае все положительные.Порядок следования чисел в обоих случаях заменить на обратный.
Помогите пожалуйста с алгоритмом!!!!

Нужно потом написать програмку на Ассемблере.


PM MAIL   Вверх
MaXL
Дата 18.5.2007, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



А есть ли какие ограничения(ну там по времени или ещё почему)?
Я вижу только самое простое: исходя из условия я понимаю что, для того чтобы выполнялось условие "ни одно четное число не расположено после нечетного" то чётные числа должны идти только в начале строки, и если встретился хоть один нечётный, то потом просто проверить если дальше встретиться хоть один нечётный, то вывести все положительные иначе все отрицательные.
Для того чтобы проверить чётность можно использовать деление по модулю на два, и если результат единица, то тогда числе не чётное, если результат нуль то число чётное.
Вот применрно вот так:
Код

  //считали перемнные в count - кол-во цифр, в numbers - цифры
  bool ch = false;
  for (int i = 0; i <= count - 1; i++){
    if ((numbers[i] % 2)) = 0) {
      if (ch) PrintPoloj(numbers); //Функция печатает положительные цифры
      ch = false;
    }
    else ch = true;
  }
  PrintOtr(numbers); //Это функция, которая печатает отрицательные числа

Ну вот вроде бы так, код может быть и не рабочий...но смысл примерно такой. А на асме уже сам напишешь.


--------------------
MaXL
PM MAIL   Вверх
jhane
Дата 18.5.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 13.8.2006
Где: Иерусалим

Репутация: нет
Всего: нет



Запомни знак 1-го числа. Если не четное (проверяеш последний бит, LSD) бежиш в цыкле до четного, или до конца ввода. Пригаеш в фунцию, которая проверит не конец ли это ввода (если да, и был скочек, то тоже напечатает), если конец, печатаеш отрицательные.

А в прошлом варианте, выведеш на печать несколько раз, если было несколько скачков.
PM MAIL ICQ   Вверх
MaXL
Дата 18.5.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 24.10.2005
Где: Владивосток

Репутация: нет
Всего: 2



jhane, ну да, это легко исправить, просто добавить break после вызово этих двух функций.


--------------------
MaXL
PM MAIL   Вверх
Azar3
Дата 15.12.2007, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 15.12.2007

Репутация: нет
Всего: нет



Если кто работал с СМ 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.



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.