gpt4 book ai didi

C++:将整数的数字分成相等的部分

转载 作者:太空狗 更新时间:2023-10-29 20:22:43 26 4
gpt4 key购买 nike

所以我手头有一个问题,想知道解决它的最有效方法。

我想把一个整数分成几部分,假设我有 1234 我想把它分成 1234或者如果我有 123,我希望它是 123

我最初的想法是像在某些现代编程语言中那样转换为字符串,然后获取字符串的长度,然后是子字符串,但我认为这不是在 C++ 中执行此操作的好方法。

我想就如何解决这个问题提出建议,我已经有一个函数可以帮助我从整数中获取位数。

template <class T> int getDigits(T number) {
int digits = 0;
while(number ){
number /= 10;
digits++;
}
return digits;
}

最佳答案

您几乎拥有所有需要的代码。请注意,函数中的 digits 变量表示数字字符串表示形式右侧部分的当前十的幂。当这超过左边的部分时就停止。

void split_int(unsigned long long a, unsigned long long& part1, unsigned long long& part2)
{
part1 = a;
part2 = 0;
unsigned long long power = 1;

while(part1 >= power) {
unsigned long long r = part1%10;

part1 /= 10;
part2 += r*power;

power *= 10;
}
}

用下面的测试程序

int main() {
unsigned long long x;
unsigned long long p1, p2;

x = 1234u;
split_int(x, p1, p2);
std::cout << "x = " << x << " -> " << p1 << " " << p2 << std::endl;

x = 123u;
split_int(x, p1, p2);
std::cout << "x = " << x << " -> " << p1 << " " << p2 << std::endl;

x = 9876543210u;
split_int(x, p1, p2);
std::cout << "x = " << x << " -> " << p1 << " " << p2 << std::endl;
}

它将打印:

x = 1234 -> 12 34
x = 123 -> 1 23
x = 9876543210 -> 98765 43210

关于C++:将整数的数字分成相等的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com