用于计算字符串的布尔函数 我需要建立一个函数来评估C++中的一组数字。数字字符串的格式表示数字为-1,0或1有效。因此,函数的要点是检查字符串以确保其有效。例如,如果用户输入“-101-11”,布尔函数将返回true。或者,如果用户输入“-1012”,布尔函数将返回false。此函数也是类的私有成员函数。太好了!让我给你演示一下我现在编码的代码(我知道这是错误的,但是如果有人能帮我,那就太好了!)它在C++中。p> bool BTernary::isTernary(string s) { int i; int l = s.length(); for (i = 0; i < l; i++) { if (s.at(i) == '-') { continue; } else if (s.at(i) == '0') { continue; } else if (s.at(i) == '1') { break; } return true; } return false; } boolbternary::isTernary(字符串s) { int i; int l=s.长度(); 对于(i=0;i
我还尝试了一种不同的方法来检查字符串,它如下所示:(这是在一个我处理了一段时间的测试文件中,它编译时没有错误。问题是,如果它看到“-”或“1”或“0”,它会自动假定它为真,而不是计算整个字符串中需要逐个字符计算的字符用于计算字符串的布尔函数 我需要建立一个函数来评估C++中的一组数字。数字字符串的格式表示数字为-1,0或1有效。因此,函数的要点是检查字符串以确保其有效。例如,如果用户输入“-101-11”,布尔函数将返回true。或者,如果用户输入“-1012”,布尔函数将返回false。此函数也是类的私有成员函数。太好了!让我给你演示一下我现在编码的代码(我知道这是错误的,但是如果有人能帮我,那就太好了!)它在C++中。p> bool BTernary::isTernary(string s) { int i; int l = s.length(); for (i = 0; i < l; i++) { if (s.at(i) == '-') { continue; } else if (s.at(i) == '0') { continue; } else if (s.at(i) == '1') { break; } return true; } return false; } boolbternary::isTernary(字符串s) { int i; int l=s.长度(); 对于(i=0;i,c++,arrays,loops,data-conversion,ternary,C++,Arrays,Loops,Data Conversion,Ternary,我还尝试了一种不同的方法来检查字符串,它如下所示:(这是在一个我处理了一段时间的测试文件中,它编译时没有错误。问题是,如果它看到“-”或“1”或“0”,它会自动假定它为真,而不是计算整个字符串中需要逐个字符计算的字符 #include <iostream> #include <string> using namespace std; int main() { int i; string s = "0"; for (i = 0; i < s
#include <iostream>
#include <string>
using namespace std;
int main()
{
int i;
string s = "0";
for (i = 0; i < s.length(); i++) {
if (s.at(i) == '-' || '0' || '1') {
cout << "True" << endl;
return True;
}
else {
cout << "false" << endl;
return false;
}
}
}
#包括
#包括
使用名称空间std;
int main()
{
int i;
字符串s=“0”;
对于(i=0;i 因为算法很简单,你应该检查-
后面是否总是跟有1
,并且没有其他字符,只有0
和1
bool BTernary::isTernary(string s) {
int l = s.length();
bool minus = false;
for (int i = 0; i < l; i++) {
if (s[i] == '-') {
if (minus) {
return false;
}
minus = true;
} else if (s[i] == '0') {
if (minus) {
return false;
}
} else if (s[i] == '1') {
if (minus) {
minus = false;
}
} else {
return false;
}
}
return !minus;
}
boolbternary::isTernary(字符串s){
int l=s.长度();
布尔负=假;
对于(int i=0;i
以下是米哈伊尔建议的更简洁版本:
bool BTernary::isTernary(const std::string& s)
{
bool minus = false;
for (const char c : s)
{
switch (c)
{
case '-':
if (minus) return false;
minus = true;
break;
case '0':
if (minus) return false;
break;
case '1':
if (minus) minus = false;
break;
default:
return false;
}
return !minus;
}
问题是什么?如果你得到一个-
,那么下一个字符必须是1
;因此continue
语句是错误的(不要忘记先检查长度)。代码当前允许-0
。让我向你展示我到目前为止编码的内容,(我知道它不正确)你是否在努力纠正你自己的逻辑?学习如何编写程序的要点是看你是否能纠正自己的错误。你尝试了一次尝试,所以用调试器检查你的代码,看看程序违背了你的计划。你可能想考虑使用.<代码>如果(S.AT(i)==`-′′‘0’′‘1’)。{
--这行代码的目的是什么?它并没有做您认为它能做的事情。这段代码需要一个for-each循环和一个switch语句