Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/23: Рейтинг темы: голосов - 23, средняя оценка - 4.78
pandal
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 5
1

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

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

Всем доброго времени суток.
Необходимо перевести число в троичную симметричную системы исчисления(0, 1, i(-1)).
Тот факт, что остаток может быть отрицательном совсем сбивает с толку.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2014, 00:40
Ответы с готовыми решениями:

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

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

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

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

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

2
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4837 / 2482 / 695
Регистрация: 18.10.2014
Сообщений: 4,290
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
pandal
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 5
24.10.2014, 16:04  [ТС] 3
Благодарю.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2014, 16:04

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru