254₁₆ = 2 · 16² + 5 · 16¹ + 4 · 16⁰ = 512 + 80 + 4 = 596₁₀
546.1₁₀ = 546.1₁₀
596 | 8 = 74 (4₄)
74 | 8 = 9 (2₃)
9 | 8 = 1₁ (1₂)
596₁₀ = 1124₈
Сначала переведём целую часть в восьмеричную систему счисления, а затем дробную:
546 | 8 = 68 (2₄)
68 | 8 = 8 (4₃)
8 | 8 = 1₁ (0₂)
546₁₀ = 1042₈
Умножаем дробную часть на 8 и записываем результат в виде:
цело_число.дробное_число
Если целое число делится на основание, то делим. А дробную часть всегда умножаем на основание и записываем в результат, как показано выше.
0. | 1 · 8 (0 / 8 = 0, 1 · 8 = 8)
0 | 8 · 8 (0 / 8 = 0, 8 · 8 = 64, поэтому 6 в целую, а 4 в дробную)
6 | 4 · 8 (6 / 8 = 8 (не делится целочисленно), 4 · 8 = 32, поэтому 3 в целую, а 2 в дробную)
3 | 2 (дальше можем не продолжать, всё зависит от точности, которая нам нужна)
Теперь собираем числа из левого блока сверху вниз:
0.063
И добавляем к 1042:
1042₈ + 0.063₈ = 1042.063₈
Результат1124₈ + 1042.063₈ = 2166.063₈
ответ2166.063₈
Вот собственно программа.
Начнем с инклюдов, у нас в наличии chrono по тому, что мы будем использовать тип данных для милисекунд, вместо обычной функции sleep. Это делаем по тому, что нам нужна точность синхронизации потоков, к томуже по факту механизм схож, но уже из стандарта C++0x, как и потоки. Если сильно хочется использовать тогда инклюдим так:
#ifdef _WIN32
#include <windows.h>
#else
#include <unistd.h>
#endif
Инклюд через иф дефайны для того, что реализацию функции sleep на разных платформах предоставляют разные хедеры.
Далее в инклюдах есть потоки, их используем по тому, что невозможно одновременно и ждать ввода пользователя и считать в цикле переменную a, по этому распаралеливаем. Один поток будет ждать ввода пользователя, другой же считать переменную a.
Так же, хорошо заметить, что весь вывод из основного потока программы (вывод через поток cout в функции main), осуществляется до старта вс потока и после его join-а, это сделано по тому, что при выводе на один экран терминала, может случится колизия, когда в середину одной строчки выведется другая (добро в асинхронный мир).
Если есть вопросы - пиши в коменты.
Буду благодарен за отметку решения как "лучшее" и нажатую кнопочку " " тут и в моем профиле.