Господа программисты. подскажите как присвоить переменной значение разряда трехзначного числа.

cactous
Offline
Зарегистрирован: 18.11.2013

Например  есть число 256

присвоить переменной n1=2,  n2=5, n3=6.

Понятно что можно делить на 10, 100  отбрасывать  дробную часть, и тд. Но ведь должен же быть специальный оператор для этого?

 

Всем спасибо.

mixail844
Offline
Зарегистрирован: 30.04.2012

ну если длинна числа заранее известна то легче все же писать через математические функции - деление и модуль + циклы.

еще можно сделать "финт ушами" и перевести число в строчку  и соответственно первый символ в строке это (в вашем примере) сотни,второй символ - десятки,третий - еденицы и потом каждый из них перевести обратно в массив типа int,тоже все это проделать в цикле .

а так что бы прям встроенная-готовая функция делала ,лично я не встречал(может потому что много хлопот писать такую функцию универсальной под все возможные случаи),если есть то скорее всег в классах Integer или Sting,но как мне кажеться использование целого класса для такой задачки этот как "из пушки по мухам "  - будет много памяти сжирать ,но если у вас во всем коде это не одно единственное место где вам нужны подобные приобразования,может и целесообразно.

axill
Offline
Зарегистрирован: 05.09.2011
uint8_t n1 = x /100;
uint8_t n2 = (x / 10) % 10;
uint8_t n3 = x % 10;

Элементарная операция с делением и модулем. Зачем под каждую простую операцию назначать свой оператор?)  если число разрядов заранее не известно - делаем цикл с последовательным делением на 10, берем модуль и кладем в массив. Таким образом получится, что первой ляжет в массив десятичная цифра, потом сотня и тд. Осианавливаемся когда в результате очередного деления получим ноль.

важно. Для этих операций переменные должны быть целочисленных типов.

 

step962
Offline
Зарегистрирован: 23.05.2011

cactous пишет:

Но ведь должен же быть специальный оператор для этого?

Конечно же есть - "Bitwise OR" (|).

Но он работает только с двоичными числами.