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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разработка библиотеки mySimpleComputer. Изучить принципы работы RAM 
:(
    Опции темы
Quotter
Дата 15.9.2010, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



          Разработать библиотеку mySimpleComputer, включающую функции по декодированию
команд, управлению регистрами и взаимодействию с оперативной памятью.

Разработайте функции по взаимодействию с оперативной памятью, управлению регистром
флагов и кодированию/декодированию команд:

   a. int sc_memoryInit () – инициализирует оперативную память Simple Computer, за-
      давая всем еѐ ячейкам нулевые значения. В качестве «оперативной памяти» использ у-
      ется массив целых чисел, определенный статически в рамках библиотеки. Размер мас-
      сива равен 100 элементам.

   b. int sc_memorySet (int address, int value) – задает значение указанной
      ячейки памяти как value. Если адрес выходит за допустимые границы, то устанавлива-
      ется флаг «выход за границы памяти» и работа функции прекращается с ошибкой;

   c. int sc_memoryGet (int address, int * value) – возвращает значение указан-
      ной ячейки памяти в value. Если адрес выходит за допустимые границы, то устанавли-
      вается флаг «выход за границы памяти» и работа функции прекращается с ошибкой.
      Значение value в этом случае не изменяется.

   d. int sc_memorySave (char * filename) – сохраняет содержимое памяти в файл в
      бинарном виде (используя функцию write или fwrite);

   e. int sc_memoryLoad (char * filename) – загружает из указанного файла содер-
         жимое оперативной памяти (используя функцию read или fread);
   
   f. int sc_regInit (void) – инициализирует регистр флагов нулевым значением;
  
  g. int sc_regSet (int register, int value) – устанавливает значение указанно-
         го регистра флагов. Для номеров регистров флагов должны использоваться маски, з а-
         даваемые макросами (#define). Если указан недопустимый номер регистра или некор-
         ректное значение, то функция завершается с ошибкой.

  h. int sc_regGet (int register, int * value) – возвращает значение указанного
         флага. Если указан недопустимый номер регистра, то функция завершается с ошибкой.
  
  i. int sc_commandEncode (int command, int operand, int * value) – кодиру-
         ет команду с указанным номером и операндом и помещает результат в value. Если ука-
         заны неправильные значения для команды или операнда, то функция завершается с
         ошибкой. В этом случае значение value не изменяется.
   
   j. int sc_commandDecode (int value, int * command, int * operand) – декодирует 
         значение как команду Simple Computer. Если декодирование невозможно, то
         устанавливается флаг «ошибочная команда» и функция завершается с оши бкой.

     Оформитm разработанную функцию как статическую библиотеку.


Вопрос:
1. Как получить алгебраическую булеву функцию из таблицы истинности? И наоборот?
2. Как перевести числа из двоичной системы счисления в десятичную? Восьмеричную? Шес тнадцатеричную? И наоборот?

PM MAIL   Вверх
Estranged
Дата 15.9.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



1. Как получить алгебраическую булеву функцию из таблицы истинности? И наоборот?
ДНФ, КНФ построить по таблице, построить таблицу из функции сложнее. Нужно вычислить значение функции для всех наборов 0 и 1
2. Как перевести числа из двоичной системы счисления в десятичную? Восьмеричную? Шес тнадцатеричную? И наоборот?
http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%...%BD%D0%B8%D1%8F
Код
string format(int num, int base = 10)
{
    ostringstream out;

    switch (base)
    {
    case 10:
        out << dec;
        break;
    case 16:
        out << hex;
        break;
    case 8:
        out << oct;
        break;
    }

    out << num << ends;
    return out.str();
}


Есть еще стандартная функция С, но не помню названия уже.

Добавлено @ 12:32
Вспомнил, это itoa.



Модератор: Не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 15.9.2010, 12:52
PM MAIL   Вверх
bsa
Дата 15.9.2010, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(Estranged @  15.9.2010,  13:21 Найти цитируемый пост)
Вспомнил, это itoa.

Она не стандартная.
PM   Вверх
Estranged
Дата 15.9.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



М... Да. Она не включена в стандарт библиотеки.
PM MAIL   Вверх
Quotter
Дата 6.10.2010, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Программа выдает ошибку expected ')' befor 'I'
Вот только не могу понять  в каком месте. Видать плохо вижу. Буду рад если покажут где она.

Код


if((command==10)||(command==11)||(command==20)||(command==21)||((command>=30)&&(command<=33))||((command>=40)&&(command<=43))I|((command>=51)&&(command<=76)))





PM MAIL   Вверх
xvr
Дата 6.10.2010, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Quotter @  6.10.2010,  10:43 Найти цитируемый пост)
Буду рад если покажут где она.
Там, где у вас вместо '|' напечатана 'I' в условии внутри if'а (после (command<=43)) )



PM MAIL   Вверх
Quotter
Дата 6.10.2010, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В таком случае появляются следующие ошибки в этой же строке

expected ')' befor 'I'
expected ')' befor '{'


PM MAIL   Вверх
bsa
Дата 6.10.2010, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Quotter, проверяй количество скобок. И НИКОГДА НЕ ДЕЛАЙ ТАКИХ БОЛЬШИХ УСЛОВИЙ. Лучше разбей их на несколько маленьких. В твоем случае можно использовать еще и switch/case.
PM   Вверх
xvr
Дата 7.10.2010, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Quotter @  6.10.2010,  11:06 Найти цитируемый пост)
В таком случае появляются следующие ошибки в этой же строке
expected ')' befor 'I'
А где у вас там 'I' (за исключением того ошибочного места, где вместо нее должно быть '|')?


PM MAIL   Вверх
Леопольд
Дата 8.10.2010, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Estranged @  15.9.2010,  12:21 Найти цитируемый пост)
Вспомнил, это itoa.
можно воспользоваться sprintf
ещё есть sscanf, strtol, strtoul, strtod

Это сообщение отредактировал(а) Леопольд - 8.10.2010, 14:22


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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