Как я могу разбить int в C++ на его одиночные числа? Например, я хотел бы разделить 23 на 2 и 3.Как разбить int на его цифры?
ответ
Учитывая число 12345:
5
является 12345 % 10
4
является 12345/10 % 10
3
является 12345/100 % 10
2
является 12345/1000 % 10
1
является 12345/10000 % 10
Я не буду предоставлять полный код, как это наверняка выглядит как домашнее задание , но я уверен, что вы получите шаблон.
Начните с самой высокой мощностью в десять раз, что соответствует в int
на ваш платформу (для 32 бит int
: 1.000.000.000) и выполнить целое деление на нее. Результат - самая левая цифра. Вычтите этот результат размноженных с делителем от исходного числа, а затем продолжить ту же игру со следующей более низкой мощности в десять раз и перебирать, пока вы не достигнете 1.
Ниже будет делать трюк
void splitNumber(std::list<int>& digits, int number) {
if (0 == number) {
digits.push_back(0);
} else {
while (number != 0) {
int last = number % 10;
digits.push_front(last);
number = (number - last)/10;
}
}
}
Перевернутое заказ значный экстрактор (., например, для 23 будет 3 и 2):
while (number > 0)
{
int digit = number%10;
number /= 10;
//print digit
}
Нормальный порядок цифр экстрактор (., например, для 23 будет 2 и 3):
std::stack<int> sd;
while (number > 0)
{
int digit = number%10;
number /= 10;
sd.push(digit);
}
while (!sd.empty())
{
int digit = sd.front();
sd.pop();
//print digit
}
for (size_t i = 0; i < sizeof(num); ++i, num>>1)
{
std::cout << (num&1) << "\n";
}
Вы не указали базу.
Вы можете просто использовать последовательность операций x/10.0f и std :: floor, чтобы иметь «математический подход». Или вы также можете использовать boost :: lexical_cast (the_number), чтобы получить строку, а затем вы можете просто сделать the_string.c_str() [i] для доступа к отдельным символам («строковый подход»).
классический трюк заключается в использовании по модулю 10: x% 10 дает вам первую цифру (т.е. цифру единиц). Для других, вам нужно разделить первое (как показано на многих других постах уже)
Вот небольшая функция, чтобы получить все цифры в векторе (который является то, что вы, кажется, хотят сделать):
using namespace std;
vector<int> digits(int x){
vector<int> returnValue;
while(x>=10){
returnValue.push_back(x%10);//take digit
x=x/10; //or x/=10 if you like brevity
}
//don't forget the last digit!
returnValue.push_back(x);
return returnValue;
}
Я не обязательно рекомендую это (это более эффективно работать с числом, а не преобразовывать его в строку), но это легко, и это работает :)
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
#include <boost/lexical_cast.hpp>
int main()
{
int n = 23984;
std::string s = boost::lexical_cast<std::string>(n);
std::copy(s.begin(), s.end(), std::ostream_iterator<char>(std::cout, "\n"));
return 0;
}
простой ответ на этот вопрос может быть: 1) Прочитать номер «n» от пользователя .... 2) Использование While Loop Уверен, что это не ноль ... 3) Возьмите модуль 10 из числа «n» .. Это даст вам свою последнюю цифру .... 4) Затем разделите число «n» на 10..Это удаляет последнюю цифру числа «n», поскольку в int decimal часть опущена .... 5) Дисплей Из числа ........
Я думаю, это поможет .... Я б простой код:
#include <iostream>
using namespace std;
int main()
{int n,r;
cout<<"Enter Your Number:";
cin>>n;
while(n!=0)
{
r=n%10;
n=n/10;
cout<<r;
}
cout<<endl;
system("PAUSE");
return 0;
}
int n;//say 12345
string s;
scanf("%d",&n);
sprintf(s,"%5d",n);
Теперь вы можете получить доступ к каждой цифре с помощью s[0]
, s[1]
и т.д.
вы можете посчитать, сколько цифр вы хотите напечатать первый
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int number, result, counter=0, zeros;
do{
cout << "Introduce un numero entero: ";
cin >> number;
}while (number < 0);
// We count how many digits we are going print
for(int i = number; i > 0; i = i/10)
counter++;
while(number > 0){
zeros = pow(10, counter - 1);
result = number/zeros;
number = number % zeros;
counter--;
//Muestra resultados
cout << " " << result;
}
cout<<endl;
}
Объявите массив и хранить отдельные цифры в массив как этот
int num, temp, digits = 0, s, td=1;
int d[10];
cout << "Enter the Number: ";
cin >> num;
temp = num;
do{
++digits;
temp /= 10;
} while (temp);
for (int i = 0; i < digits-1; i++)
{
td *= 10;
}
s = num;
for (int i = 0; i < digits; i++)
{
d[i] = s/td %10;
td /= 10;
}
На основании ответа icecrime, я написал эту функцию
std::vector<int> intToDigits(int num_)
{
std::vector<int> ret;
string iStr = to_string(num_);
for (int i = iStr.size() - 1; i >= 0; --i)
{
int units = pow(10, i);
int digit = num_/units % 10;
ret.push_back(digit);
}
return ret;
}
int power(int n, int b) {
int number;
number = pow(n, b);
return number;
}
void NumberOfDigits() {
int n, a;
printf("Eneter number \n");
scanf_s("%d", &n);
int i = 0;
do{
i++;
} while (n/pow(10, i) > 1);
printf("Number of digits is: \t %d \n", i);
for (int j = i-1; j >= 0; j--) {
a = n/power(10, j) % 10;
printf("%d \n", a);
}
}
int main(void) {
NumberOfDigits();
}
- 1. как разбить цифры pi на список
- 2. Как разбить целое число на цифры компонента
- 3. Как разбить число на цифры в R
- 4. Swift - Разделить Int на отдельные цифры
- 5. как разбить его на функцию
- 6. Как разбить int
- 7. Как разбить строку и найти цифры?
- 8. Как разбить слова и цифры, используя токенизацию
- 9. Как разбить int на два символа
- 10. Как разбить строку на int [3]
- 11. Как разбить строку (используя regex?) В зависимости от цифры/цифры
- 12. Как разбить строку чисел в массив int?
- 13. Как разбить текст и цифры, используя AWK
- 14. Назначение каждой цифры int массиву int
- 15. Как разбить число на отдельные цифры в C#?
- 16. Как разбить число на свои цифры в Javascript?
- 17. как взять txt-файл и разбить его на строки, избавиться от любых поплавков или int
- 18. Как разбить pyodbc.row на список его значений
- 19. Как я могу разбить целое число на его цифры компонента и поместить каждую цифру в список?
- 20. Все цифры в int делятся на некоторые int
- 21. JAVA-Как разбить строку на массив int на основе пробелов
- 22. PHP круглый INT 3 цифры
- 23. Удалить последние цифры из int
- 24. Разбить строку в символы и цифры отдельно
- 25. Как получить все цифры значения Int
- 26. Извлечение каждой цифры в int
- 27. Как разбить переменную int/float - Java/Android
- 28. Как разбить строку на LinkedList <int>?
- 29. Температура конвертировать две цифры int в float
- 30. как разбить строку на запятую в C++
Думайте об этом как головоломку. Если вы все еще не можете понять, как это сделать, напишите, что вы пробовали, и люди могут комментировать. – 2010-11-23 22:25:11
Возможный дубликат [Разделить целое число на его цифры C++] (http://stackoverflow.com/questions/4207696/split-an-integer-into-its-digits-c) – 2010-11-23 23:14:49