用于计算字符串的布尔函数 我需要建立一个函数来评估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++中的一组数字。数字字符串的格式表示数字为-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

我还尝试了一种不同的方法来检查字符串,它如下所示:(这是在一个我处理了一段时间的测试文件中,它编译时没有错误。问题是,如果它看到“-”或“1”或“0”,它会自动假定它为真,而不是计算整个字符串中需要逐个字符计算的字符

#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语句