提问者:小点点

字符串和开关语句的问题??C++评分系统[副本]


当我开始编写这段代码时,我遇到了字符串和switch语句的问题,这就是为什么我不确定我是否正确地绕过了这个问题。最主要的问题是程序只打印图表的答案而不打印字符串的答案。也许这是因为使用了错误的“if”。下面是我的代码:

#include <iostream>
#include <string> 

using std::cin;
using std::cout;
using std::string;
using namespace std;

 constexpr long long string_hash(const char *s) {
long long hash{}, c{};
for (auto p = s; *p; ++p, ++c) {
    hash += *p << c;
}
return hash; }   constexpr long long operator"" _sh(const char *s, size_t) {
return string_hash(s); }

int main() {
    cout << "Ievadiet atzimi ar burtiem (A, B, C, D, F) ==> ";
    string atzime;
    char burts;
    double atzime_sk, pluss, minuss;

    cin >> atzime;
    burts = atzime[0];
    switch(burts) 
    {
    case 'A':
        atzime_sk = 4;
        cout << "Tava atzime ir ==> " << atzime_sk;
        break;
    case 'B':
        atzime_sk = 3;
        cout << "Tava atzime ir ==> " << atzime_sk;
        break;
    case 'C':
        atzime_sk = 2;
        cout << "Tava atzime ir ==> " << atzime_sk;
        break;
    case 'D':
        atzime_sk = 1;
        cout << "Tava atzime ir ==> " << atzime_sk;
        break;
    case 'F':
        atzime_sk = 0;
        cout << "Tava atzime ir ==> " << atzime_sk;
        break;
    default:
        break;
    }
    
   if (atzime[1] == '-' || '+')
    {
      switch (string_hash(atzime.c_str()))
      {
      case "+"_sh:
        pluss = atzime_sk + 0.3;
        cout << "Tava atzime ir ==> " << atzime_sk;
        break;
      case "-"_sh:
        minuss = atzime_sk - 0.3;
        cout << "Tava atzime ir ==> " << atzime_sk;
        break;
      default:
        break;
      }
    }
 }

共1个答案

匿名用户

if (atzime[1] == '-' || '+')

并不像你想象的那样。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(字符串|开关|语句|c++|评分|系统|副本)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?