0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 5
1

Перевод числа из десятичной в троичную симметричную систему исчисления

24.10.2014, 00:40. Показов 20651. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток.
Необходимо перевести число в троичную симметричную системы исчисления(0, 1, i(-1)).
Тот факт, что остаток может быть отрицательном совсем сбивает с толку.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2014, 00:40
Ответы с готовыми решениями:

Перевести в симметричную троичную систему счисления
перевести значение 20152016 в симметричной системы счисления Добавлено через 24 секунды можно в...

Рекурсивный перевод числа в двоичную систему исчисления
#include <iostream> #include <string> using namespace std; void fuck(const int num, string...

Перевод числа из десятичной в шестнадцатеричную систему
Добрый день, проблема в том, что не могу понять как перевести число в шестнадцатеричную систему. ...

Перевод числа из десятичной в шестнадцатеричную систему счисления
Здраавствуйте, помогите найти ошибку в этом коде. Непонимаю почему при переводе таких чисел как...

2
С чаем беда...
Эксперт CЭксперт С++
10014 / 5360 / 1467
Регистрация: 18.10.2014
Сообщений: 12,926
24.10.2014, 02:38 2
Лучший ответ Сообщение было отмечено pandal как решение

Решение

Вся идея тут в том, что положительное число A можно разделить с остатком на 3 двумя способами

Первый, традиционный: A / 3 = q (остаток r1, 0 <= r1 < 3)
Второй, сдвинутый: A / 3 = q + 1 (остаток r2 = r1 - 3, -3 <= r2 < 0)

Например: 5 / 3 = 1 (остаток 2) или 5 / 3 = 2 (остаток -1)

Берем исходное число и итеративно делим его на 3. Если число делится нацело, то на выход записываем 0. Если число не делится нацело, то выбираем тот вариант (из вышеприведенных), который дает меньший по модулю остаток. Остаток записываем на выход.

Добавлено через 35 секунд
К примеру

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
 
int main() {
  unsigned a = 32;
  std::string s;
 
  while (a > 0) {
    unsigned q = a / 3;
    unsigned r = a % 3;
    if (r <= 1) {
      s = (char)(r + '0') + s;
      a = q;
    }
    else {
      r = 3 - r;
      s = '-' + ((char)(r + '0') + s);
      a = q + 1;
    }
  }
 
  std::cout << s << std::endl;
}
2
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 5
24.10.2014, 16:04  [ТС] 3
Благодарю.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2014, 16:04
Помогаю со студенческими работами здесь

Разложение числа в троичную систему счисления
Дано натуральное число р. Получить последовательность а0, ..., аn, каждый член которой равен -1,...

Перевод натурального числа из десятичной системы счисления в систему счисления по основанию
Здравствуйте. Я хотела бы попросить у вас помощи. Я понимаю, что это не очень красиво, но вдруг...

Рекурсия: перевод целого числа из десятичной системы счисления в 9 систему счисления
Написать рекурсивную функцию перевода целого числа из десятичной системы счисления в 9-чную...

Перевод из двоичной в десятичную систему исчисления
Проверить правильно ввода этого числа ( в его записи должны быть 0 или 1) при правильном вводе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru