Как разбить любое трехзначное число (введенное с клавиатуры) на три отдельные цифры?

Как можно разложить любое трехзначное число на три отдельные цифры?
  • Вопрос задан
  • 25120 просмотров
Пригласить эксперта
Ответы на вопрос 6
Djaler
@Djaler
Сеньор-помидор
Либо преобразовать число в строку и взять отдельные символы, либо использовать остаток от деления на 10 и деление на 10
Ответ написан
@Beltoev
Живу в своё удовольствие
Как-то так, если псевдокодом:
число = 123
первое_число = число div 100
второе_число = (число div 10) mod 10
третье_число = число mod 10
Ответ написан
angru
@angru
это python, но для всех остальных языков почти тоже самое
a = 368

for x in [100, 10, 1]:
    print(a // x)  # целочисленное деление
    a %= x  # остаток от деления


версия для произвольного положительного числа:

from math import log10


a = 1234567890

assert a >= 0, "только для положительных значений"

for x in range(int(log10((a // 10 * 10) or 1)), -1, -1):
    x = 10 ** x
    print(a // (x))
    a %= x
Ответ написан
Комментировать
antonsosnitzkij
@antonsosnitzkij
студент, житель санкт-петербурга
Есть довольно интересный метод решения задачи: double dabble.
Двоичный код мы превращаем в двоично-десятичный: каждая цифра числа представлена в виде 4х битов. Способ решения может показаться не самым оптимальным, но определенно является оригинальным и к тому же не требует от железа использования операции деления и использования функции остатка от деления. В самой статье есть код и на VHDL и на C.
Ответ написан
Комментировать
@vilgeforce
Раздолбай и программист
Тэг "железо" тут не при чем. Ваша задача решается при помощи строковых функций, смотрите что в вашем языке есть для выделения подстроки.
Ответ написан
@pashacompany
Все просто:
'это комментарий
For I = 1 To 3 ' цикл. 3ка это разрядность делимого числа. Хоть 100 разрядов.
x = Число Mod 10 ' Число должно быть байтом без запятых!
Print x ' вот тут появляется последняя цифра числа
Число = Число / 10 ' тут число лишается последней цифры
Next

'Для понимания: другие варианты:

Dim Цифра(4) As Byte ' массив из байт (целые числа без запятой!)
Цифра(4) = 123 'разбиваем 123 на 1,2,3
Цифра(1) = Цифра(4) / 100 '123/100=1
Цифра(3) = Цифра(4) Mod 10 'остаток от деления 123 на 10 = 3
Цифра(4) = Цифра(4) / 10 ' 123/10=12
Цифра(2) = Цифра(4)mod 10 ' остаток от деления 12 на 10 =2

Print Цифра(1) ; Цифра(2) ; Цифра(3) ' 1 2 3 печатаем наши три цифры

' Второй вариант:
Dim I As Byte , Цифра(4) As Byte
Цифра(4) = 123 'разбиваем 123 на 1,2,3

For I = 3 To 1 ' цикл. 3ка это разрядность делимого числа. Хоть 100 разрядов. Но и массив должен быть такой же
Цифра(i) = Цифра(4) Mod 10
Цифра(4) = Цифра(4) / 10
Next
Print Цифра(1) ; Цифра(2) ; Цифра(3)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы