Форум программистов, компьютерный форум CyberForum.ru

Написать программу, которая переводит число из десятичной системы счисления в позиционную систему счисления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переполнение знаковых целых чисел: почему значение переменной обнуляется, а не записывается младшее значение? http://www.cyberforum.ru/cpp-beginners/thread1669848.html
что то не пойму, как происходит переполнение знаковых целых чисел вот #include <iostream> int main(int argc, char* argv) { int aaa , bbb ; aaa = 1 ;
C++ Правильное применение перечисления enum Дело в том, что не пойму как работать с перечислением. Мне нужно, чтобы программа принимала данные о 3 сотрудниках ( дата найма на работу, номер и размер пособия, его должность). Должности 3 - лаборант, секретарь и менеджер. Затем, чтобы она выводила о каждом сотруднике всю полученную информацию. С enum запутался, не могу понять как правильно записать в моем случае... #include <iostream> using... http://www.cyberforum.ru/cpp-beginners/thread1669836.html
C++ Программа для построения графов. Как запустить созданный файл в graphviz?
Необходимо создать программу, которая будет обрабатывать матрицу смежности графа и записывать файл для graphviz. Проблема состоит в том что я не знаю как запустить(через код моей программы) созданный файл в graphviz. После создания файла программа должна запустить Graphviz и открыть в нем этот файл. // Graph.cpp #include "stdafx.h" #include <fstream> #include <iostream> #include...
Отсортировать по убыванию четные столбцы массива C++
Дан массив размерностью 5х6. Отсортировать по убыванию четные столбецы массива.
C++ Наибольший элемент строки матрицы поменять местами с элементом главной диагонали http://www.cyberforum.ru/cpp-beginners/thread1669830.html
Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.(главная диагональ - идущая с левого верхнего угла в правый нижний)
C++ Пять последних элементов последовательно помножить на номер элемента массива Пять последних элементов последовательности у1, у2, ..., у20 помножить на номер минимального элемента данной последовательности. подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3635 / 1910 / 503
Регистрация: 18.10.2014
Сообщений: 3,477
24.02.2016, 21:42     Написать программу, которая переводит число из десятичной системы счисления в позиционную систему счисления
(Это значит "я написал ерунду и решил удалить свое сообщение")

Итак.

Сначала надо заметить, что веса разрядов в таковой системе счисления будут следующими:

1, 3, 15, 105, 945, ...

Как и в любой позиционной системе счисления, вес каждого следующего разряда равен весу предыдущего разряда, умноженного на количество значений в предыдущем разряде.

Там образом разряды, взятые по отдельности, могут предоставлять следующие значения (нумеруя разряды с 0)

Разряд 0: -1, 0, 1
Разряд 1: -6, -3, 0, 3, 6
Разряд 2: -45, -30, -15, 0, 15, 30, 45
Разряд 3: -420, -315, -210, -105, 0, 105, 210, 315, 420
...

Перевод произвольного числа N в эту систему счисления можно производить "лобовым" алгоритмом, применимым к любой системе счисления:
1. Берем исходное число N и находим ближайшее к нему число D, представимое одним разрядом (т.е. из списка выше). Используем этот разряд.
2. Вычитаем из исходного числа N число D: N = N - D
3. Переходим на шаг 1, пока N не превратится в 0

Например, переведем в эту систему счисления число 181:

- Для 181 ближайшим одноразрядным числом является число 210. Это разряд 3, цифра 2. Итого получаем 2***. Остаток 181 - 210 = -29
- Для -29 ближайшим одноразрядным числом является число -30. Это разряд 2, цифра B. Итого получаем 2B**. Остаток -29 - -30 = 1
- Для 1 ближайшим одноразрядным числом является число 1. Это разряд 0, цифра 1. Итого получаем 2B01. Остаток 0. Все.

В таком алгоритме самое неприятное - это поиск ближайшего одноразрядного числа. Я пока не вижу остроумных способов решения этой задачи. Т.е. пока предлагается просто тупо (или почти тупо) генерировать все одноразрядные числа в поиске ближайшего. Это не сложно.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru