Использовать unsigned char вместо unsigned short в данной задаче

Пользователь вводит двузначное целое неотрицательное число. Вывести в первой строке последнюю цифру числа (количество единиц), а на следующей - первую цифру числа (количество десятков).

Пример данных:

  • Вводимое число 28
  • Выводимое число 8
  • Выводимое число 2
#include <iomanip>
#include <iostream>
using namespace std;
int main() {

    unsigned short a;
    cin >> a;
    cout << a%10 << "\n" 
         << a/10 << "\n";

    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Как я понял, сверхзадача — не использовать никаких других переменных? потому что иначе просто - читаем в int, присваиваем unsigned char...

А вот абсолютно без дополнительных переменных... Ну, если защиту от дурака опустить, т.е. либо одна, либо 2 цифры с последующим <Enter>, то, например:

unsigned char a;
a = cin.get()-'0';
if (isdigit(cin.peek())) a = a*10+cin.get()-'0';

cout << a%10   << "\n"
     << a/10   << "\n";

Годится? :)

Если гарантированно 2 цифры, то еще проще...

unsigned char a;
a = (cin.get()-'0')*10;
a += cin.get()-'0';
→ Ссылка