JavaSript:
Huppies отвечают на одну строку:
(function i(){ i(); })()
То же количество символов, но никакая новая строка:)
Возможно, лучшим решением будет работать в обратном направлении:
123456% 10 = 6
123456/10 = 12345
12345% 10 = 5
12345/10 = 1234
просто используйте модульную арифметику:
int array[6];
int number = 123456;
for (int i = 5; i >= 0; i--) {
array[i] = number % 10;
number /= 10;
}
Возьмите log10 числа, чтобы получить количество цифр. Поместите это, скажем, pos
, затем в цикле возьмите по модулю 10 ( n% 10
), поместите результат в массив в позиции pos
. Уменьшите pos
и разделите число на 10. Повторяйте до pos == 0
Что вы хотите сделать со знаком, если он отрицательный?
Последнюю цифру числа можно извлечь следующим образом:
int digit = number % 10;
number /= 10;
Обратите внимание, что вы также должны проверить, является ли число
положительным. Другие значения требуют дополнительной обработки.
Самый простой способ, который я могу себе представить, это:
char array[40];
int number = 123456;
memset(array, 0x00, sizeof(array));
sprintf(array, "%d", number);
Кроме того, вы можете преобразовать каждую цифру в int, просто вычтя значение char на 0x30.
РЕДАКТИРОВАТЬ : если это домашнее задание, ваш учитель вы, вероятно, попросите вас написать программу с использованием оператора% (пример 12% 10 = 2). Если это так, хорошее домашнее задание; -)
Вы можете использовать модуль для определения последней цифры.
И вы можете использовать деление, чтобы переместить другую цифру на место последней цифры.
Вы не можете просто "преобразовать" его. Целое число в программном обеспечении не представляется в десятичной системе счисления. Таким образом, отдельных цифр, которые вы хотите , не существует . Они должны быть вычислены.
Итак, учитывая произвольное число, как вы можете определить количество единиц?
Мы могли бы разделить на десять, а затем взять остаток: для 123 деление даст 12, и затем остается 3. Итак, у нас есть 3 единицы. Число 12 сообщает нам, что у нас было после этих, поэтому это может быть наш ввод для следующей итерации. Мы берем это, делим на 10 и получаем 1, а остаток - 2. Итак, у нас есть 2 в разряде десятков и 1, чтобы работать с сотнями. Разделите это на 10, и мы получим ноль, а остаток - 1. Итак, мы получаем 1 в разряде сотен, 2 в разряде десятков и 3 в разряде единиц. И мы закончили,
См. Вопрос SO Раскрытие языка: преобразовать строку цифр в массив целых чисел? для версии C / C ++ (а также для других языков).
если это действительно домашнее задание, покажите его своему учителю - просто для удовольствия ;-)
ВНИМАНИЕ! очень низкая производительность, неуклюжий способ достичь ожидаемого эффекта и обычно не делают этого дома (на работе); -)
#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" ) );
}