Вычисление цифр числа
Необходимость применения операции вычисления остатка от деления видна при работе с цифрами числа.
Задача
Дано трехзначное число. Вывести на экран все цифры этого числа и получить новое число, образованное перестановкой единиц и сотен.
Самый трудный вопрос, который возникает у начинающих - как же разбить число на составляющие его цифры.
На самом же деле, все решается достаточно просто, если вспомнить математику. А математика нам говорит, что любое число можно разложить на сумму разрядных слагаемых.
Например:
365=3*100+6*10+5*1
. Мы видим, что каждая цифра - это множитель у соответствующего разряда числа.
Покажем, как получить каждую цифру числа в отдельную переменную. Рассмотрим процедуру деления столбиком числа 365 на число 10 (число 10 мы берем, т.к. у нас десятичная система счисления и соответственно разрядные слагаемые у нас 1, 10, 100 и т.д.).
Проанализировав рисунок можно увидеть, что:
e = n % 10; // операция n % 10 -
// вычисляет последнюю цифру числа n (то есть цифру единиц)
// 365 % 10 = 5
d = n / 10 % 10; // операция n / 10 - сокращает число в 10 раз,
// то есть отбрасывает у числа последнюю цифру (365 / 10 = 36),
// теперь мы можем вычислить цифру десятков,
// применив к результату знакомую операцию
// - вычислить остаток от деления на число 10, 36 % 10 = 6
s = n / 100; // чтобы получить цифру сотен,
// достаточно у числа отбросить справа две цифры,
// то есть дважды разделить на 10
// (n / 10 /10 или тоже самое, что n / 100) 365 / 100 = 3
Получив все цифры числа, мы можем составить из них другое число, умножая нужную цифру на соответствующий разряд: например, строка ниже получит из исходного числа
n
новое число, у которого переставлены сотни и единицы:
1) цифру единиц (сохраненные в переменной
e
)
умножаем на
100
;
2) цифру десятков (сохраненные в переменной
d
)
умножаем на
10
;
3) цифру сотен мы может умножить просто на 1, или просто взять значение, сохраненное в переменной
s
;
Затем значения из пунктов 1, 2 и 3 необходимо сложить и получим новое число:
n1 = e * 100 + d * 10 + s;
Целиком программа будет выглядеть следующим образом:
#include<iostream>
using namespace std;
int main()
{
int n, e, d, s;
cin >> n;
e = n % 10;
d = n / 10 % 10;
s = n / 100;
cout << e << " " << d << " " << s << " " << (e * 100 + d * 10 + s) << endl;
return 0;
}