C++ 为什么我的If-Else永远不会评估为真?
我要计算变量整数“num”除以每个数字的次数,得到一个干净的商(余数为0) 注:每个数字都被认为是唯一的,因此应统计相同的可等分数字的每次出现次数(即:对于222,答案为3)C++ 为什么我的If-Else永远不会评估为真?,c++,c++11,if-statement,C++,C++11,If Statement,我要计算变量整数“num”除以每个数字的次数,得到一个干净的商(余数为0) 注:每个数字都被认为是唯一的,因此应统计相同的可等分数字的每次出现次数(即:对于222,答案为3) int-solver(int-num)//获取一个整数 { string numString=to_string(num);//将整数转换为字符串,以便我可以处理单个数字 int divisible=0;//将在“num”中存储一个可等分的数字计数 for(int x=1;x=1)//忽略数组中最后一个0或0的数字 ++x
int-solver(int-num)//获取一个整数
{
string numString=to_string(num);//将整数转换为字符串,以便我可以处理单个数字
int divisible=0;//将在“num”中存储一个可等分的数字计数
for(int x=1;x=1)//忽略数组中最后一个0或0的数字
++x;
if(num%numString[x-1]==0)//这永远不会计算为真。为什么???
可除++;
}
返回可分//变量“num”中可平均分割的位数
}
这个函数总是返回0(变量int“divisible被初始化为0),因为递增它的if-else总是计算为false并被跳过。我已经检查并确保if-else参数包含有效的数字(它们都是整数).是不是因为它们都是整数,结果的小数部分在计算时永远不会达到?这是我能想到的最好的可能性,即使这样,我也不知道如何补救
std::string
的功能。不需要end
和begin
来获取字符串的长度
numString[x-1]
返回一个char
ASCII码,而不是作为数值的数字。例如,十进制0
的ASCII码是48
。要获取单个数字的数值,可以执行以下操作:
numString[x-1]-“0”
std::string
的功能。不需要end
和begin
来获取字符串的长度
numString[x-1]
返回一个char
ASCII码,而不是作为数值的数字。例如,十进制0
的ASCII码是48
。要获取单个数字的数值,可以执行以下操作:
numString[x-1]-“0”
您有一个字符串。字符串包含字符。字符(即使是数字)也不是数字。
0!=“0”
。是否使用IDE?您可以创建一个变量int test=num%numString[x-1]
然后看看什么测试equals@VictorTran我使用222表示num,测试返回22,即。。weird@Someprogrammerdude我怎样才能把这些字符串清晰地转换成整数?@WillNjundong我不认为这比你的更痛苦(但我承认我可以拆分一些说明,让初学者更清楚)-您的代码涉及迭代器、类似数组的对象(std::string
)以及数字字符和整数之间的转换('0'-0
)我的代码只涉及循环和简单算术的简单<代码>。我需要一些C++书籍的章节来理解代码,而其中的第一章涵盖了理解我的所有需要。你有一个字符串。字符串包含字符。字符(即使它们是数字)。不是数字。0!=“0”
。您使用的是IDE吗?您可以创建一个变量int test=num%numString[x-1]
然后看看什么测试equals@VictorTran我使用222表示num,测试返回22,即。。weird@Someprogrammerdude我怎样才能把这些字符串清晰地转换成整数?@WillNjundong我不认为这比你的更痛苦(但我承认我可以拆分一些说明,让初学者更清楚)-您的代码涉及迭代器、类似数组的对象(std::string
)以及数字字符和整数之间的转换('0'-0
)-我的代码只涉及< <代码>循环和简单算术>简单的<代码>。我需要一些C++书籍的章节来理解代码,而其中的第一章涵盖了理解我的所有需要的东西。我想我尝试过类似的事情,以及变量的长度和不合理的数字。根据我在线学习的string::length
返回字符串中的字节数,与size()相同
。指向的链接。您可以通过string::capacity
获得内存大小。我想我之前尝试过类似的方法,以及variable.length,但得到了不合理的数字。根据我在网上学到的string::length
返回与大小相同的字符串中的字节数()
。指向的链接。您可以通过string::capacity
int solver(int num) //gets an integer
{
string numString = to_string(num); //convert integer to string so i can manipulate individual digits
int divisible=0; //will store a count of digits in "num" which can be divided evenly
for (int x = 1; x <= (end(numString) - begin(numString))/*string length*/; x++)
{
if (numString[x-1] == 0 || (end(numString) - begin(numString))-x >=1) //ignore digits which are 0 and or 0s that are last in the array
++x;
if (num % numString[x - 1] == 0) //THIS NEVER EVALUATES TO TRUE. HOW COME???
divisible++;
}
return divisible; //number of digits in variable "num" which can be evenly divided
}