Форум
C/C++. Прикладные вопросы
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, sergii.p, Вы писали: SP>Здравствуйте, cppguard, Вы писали: SP>попробовал поправить код: SP>[ccode] SP>#include <iostream> SP>constexpr size_t pow(size_t base, size_t exp, size_t res = 1) { SP> return exp > 0 ? pow(base, exp - 1, res * base) : res; SP>} SP>template<typename T, unsigned N> SP>class Q { SP> T value; SP>public: SP> Q(T value): value(value) {} SP> T integral() const { return value >> N; } SP> T fractional() const { return pow(5, N) * (value & ((1 << N) - 1)); } SP>}; SP>constexpr size_t leading_zeros(auto v, size_t num) { SP> return v == 0 ? num : leading_zeros(v / 10, num - 1); SP>} SP>template<typename T> SP>constexpr T remove_trailing_zeros(T v) { SP> return v % 10 == 0 ? remove_trailing_zeros(v / 10) : v; SP>} SP>std::ostream& print_leading_zeros(std::ostream& os, size_t n) { SP> if(n != 0) { SP> os << "0"; SP> print_leading_zeros(os, n - 1); SP> } SP> return os; SP>} SP>template<typename T, unsigned N> SP>std::ostream& operator<< (std::ostream& os, const Q<T, N>& q) SP>{ SP> os << static_cast<int>(q.integral()) << "."; SP> print_leading_zeros(os, leading_zeros(q.fractional(), N)); SP> return os << static_cast<int>(remove_trailing_zeros(q.fractional())); SP>} SP>void println(auto v) { SP> std::cout << v << std::endl; SP>} SP>int main(int argc, char *argv[]) { SP> println(Q<int, 4>(0b101101)); SP> println(Q<int, 4>(0b101000)); // trailng zeros SP> println(Q<int, 3>(0b101101)); SP> println(Q<int, 4>(0b100001)); // leading zeros SP>} SP>[/ccode] SP>Вывод: SP>[q] SP>2.8125 SP>2.5 SP>5.625 SP>2.0625 SP>[/q]
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …