Другие языки программирования и технологии

Системы счисления. Реализация в С++

Напечатать натуральное число N:
а) в двоичной системе счисления;
б) в шестнадцатеричной системе счисления.

При этом надо реализовать на С++ с использованием простейших циклов. Без указателей, без всякой это дребедени
Без указателей, без всякой дребедени, и даже без простейших циклов:

#include <iostream>

using namespace std;

void pb(unsigned n, bool p = true) {
    if (n || p) {
        pb(n / 2, false);
        cout << n % 2;
    }
}

void ph(unsigned n, bool p = true) {
    if (n || p) {
        ph(n / 16, false);
        cout << char(n % 16 + (n % 16 > 9 ? 'A' - 10 : '0'));
    }
}

int main() {
    unsigned x;
    cout << "число в 10-й сс? ";
    cin >> x;
    cout << "в 2-й сс: "; pb(x); cout << endl;
    cout << "в 16-й сс: "; ph(x); cout << endl;
}
ТВ
Тёма Волчек
58 603
Лучший ответ
Андрей Федоров cout 9 ? 'A' - 10 : '0'));
Это прекрасно по моему.
А зачем для реализации вашей задачи нужна вся эта дребедень?
a) for( ;n > 0; n >>= 1) printf( "%d", n & 1 );
b) digits = "0123456789abcdef";
for( ; n > 0; n >>=4 ) printf( "%c", c[ n & 0xF ] );
Тёма Волчек Оно же наеборот выводит:
1234 -> 4d2
А ваш цикл: 2d4
А зачем для реализации вашей задачи нужна вся эта дребедень?
a) for( ;n > 0; n >>= 1) printf( "%d", n & 1 );
b) digits = "0123456789abcdef";
for( ; n > 0; n >>=4 ) printf( "%c", c[ n & 0xF ] );
Игорь Титов
Игорь Титов
3 561
Святослав Наумов Ваш ответ не соответсвует правилам. Могут забанить.