gpt4 book ai didi

c++ - 不明确的转换 - C++

转载 作者:行者123 更新时间:2023-12-03 12:51:33 24 4
gpt4 key购买 nike

我正在尝试使用 C++ 和 Xcode 作为编译器来编写一个函数,该函数将测试 a 是否是回文。当参数是“C++ 原生”类型(例如 int、long、double 等)时,代码运行良好,但我想将该函数用于更大的值。所以我使用了 BigInteger 类型的参数。但是编译器就报错了

 BigInteger q = x - floor(x.toLong()/10)*10

从“double”到“const BigInteger”的转换不明确。这是完整的代码:

#include <iostream>
#include "BigInteger.hh"

using namespace std;
bool isPalindrom(BigInteger x){
long ch = ceil(log10(x.toUnsignedLong())), n[ch];
// cout << floor(log10(x)) + 1 << endl;
for (int i = 0; i <= ch; i++){
BigInteger q = x - floor(x.toLong()/10)*10;
n[i] = q.toInt();
// cout << n[i] << endl;
x /= 10;
}

for (long i = 0; i <= ceil(ch); i++){
if (n[i] != n[ch - i]){
return false;
}
}
return true;
}

如何解决这个问题?

最佳答案

如果您要始终转换为长整型,那么使用 BigInteger 就没有什么意义。

您可以仅使用 BigInteger 操作来编写该内容,其方式与使用原始整数完全相同:

bool isPalindrome(BigInteger x){
std::vector<int> digits;
while (x > 0)
{
digits.push_back((x % 10).toInt());
x /= 10;
}

size_t sz = digits.size();
for (size_t i = 0; i < sz; i++){
if (digits[i] != digits[sz - i - 1]){
return false;
}
}
return true;
}

关于c++ - 不明确的转换 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14839946/

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