Использовать 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';