Преобразуйте целое число для выстраивания

JavaSript:

Huppies отвечают на одну строку:

(function i(){ i(); })()

То же количество символов, но никакая новая строка:)

15
задан Default 19 December 2012 в 15:18
поделиться

9 ответов

Возможно, лучшим решением будет работать в обратном направлении:

123456% 10 = 6

123456/10 = 12345

12345% 10 = 5

12345/10 = 1234

26
ответ дан 1 December 2019 в 00:33
поделиться

просто используйте модульную арифметику:

int array[6];
int number = 123456;
for (int i = 5; i >= 0; i--) {
    array[i] = number % 10;
    number /= 10;
}
9
ответ дан 1 December 2019 в 00:33
поделиться

Возьмите log10 числа, чтобы получить количество цифр. Поместите это, скажем, pos , затем в цикле возьмите по модулю 10 ( n% 10 ), поместите результат в массив в позиции pos . Уменьшите pos и разделите число на 10. Повторяйте до pos == 0

Что вы хотите сделать со знаком, если он отрицательный?

2
ответ дан 1 December 2019 в 00:33
поделиться

Последнюю цифру числа можно извлечь следующим образом:

int digit = number % 10;
number /= 10;

Обратите внимание, что вы также должны проверить, является ли число положительным. Другие значения требуют дополнительной обработки.

4
ответ дан 1 December 2019 в 00:33
поделиться

Самый простой способ, который я могу себе представить, это:

char array[40];
int number = 123456;

memset(array, 0x00, sizeof(array));

sprintf(array, "%d", number);

Кроме того, вы можете преобразовать каждую цифру в int, просто вычтя значение char на 0x30.

РЕДАКТИРОВАТЬ : если это домашнее задание, ваш учитель вы, вероятно, попросите вас написать программу с использованием оператора% (пример 12% 10 = 2). Если это так, хорошее домашнее задание; -)

0
ответ дан 1 December 2019 в 00:33
поделиться

Вы можете использовать модуль для определения последней цифры.

И вы можете использовать деление, чтобы переместить другую цифру на место последней цифры.

0
ответ дан 1 December 2019 в 00:33
поделиться

Вы не можете просто "преобразовать" его. Целое число в программном обеспечении не представляется в десятичной системе счисления. Таким образом, отдельных цифр, которые вы хотите , не существует . Они должны быть вычислены.

Итак, учитывая произвольное число, как вы можете определить количество единиц?

Мы могли бы разделить на десять, а затем взять остаток: для 123 деление даст 12, и затем остается 3. Итак, у нас есть 3 единицы. Число 12 сообщает нам, что у нас было после этих, поэтому это может быть наш ввод для следующей итерации. Мы берем это, делим на 10 и получаем 1, а остаток - 2. Итак, у нас есть 2 в разряде десятков и 1, чтобы работать с сотнями. Разделите это на 10, и мы получим ноль, а остаток - 1. Итак, мы получаем 1 в разряде сотен, 2 в разряде десятков и 3 в разряде единиц. И мы закончили,

0
ответ дан 1 December 2019 в 00:33
поделиться

См. Вопрос SO Раскрытие языка: преобразовать строку цифр в массив целых чисел? для версии C / C ++ (а также для других языков).

0
ответ дан 1 December 2019 в 00:33
поделиться

если это действительно домашнее задание, покажите его своему учителю - просто для удовольствия ;-)

ВНИМАНИЕ! очень низкая производительность, неуклюжий способ достичь ожидаемого эффекта и обычно не делают этого дома (на работе); -)

#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>

typedef std::vector< int > ints_t;

struct digit2int
{
    int operator()( const char chr ) const
    {
        const int result = chr - '0';
        return result;
    }
};

void foo( const int number, ints_t* result )
{
    std::ostringstream os;
    os << number;
    const std::string& numberStr = os.str();
    std::transform(
        numberStr.begin(),
        numberStr.end(),
        std::back_inserter( *result ),
        digit2int() );
}

int main()
{
    ints_t array;
    foo( 123456, &array );
    std::copy(
        array.begin(),
        array.end(),
        std::ostream_iterator< int >( std::cout, "\n" ) );
}
0
ответ дан 1 December 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: