为什么这段代码给我 "expected unqualified-id" 错误
why is this code giving me "expected unqualified-id" error
这是创意link:
https://ideone.com/0fqnCG
#include <iostream>
#include <string>
using namespace std;
int main()
{
string cases[8] = {"TTT", "TTH", "THT", "THH", "HTT", "HTH", "HHT", "HHH"};
int p, j, i;
cin >> p;
int sets[p];
string toss[p];
string new;
for (i = 0; i < p; i++)
{
cin >> sets[i];
cin >> toss[i];
}
for (i = 0; i < p; ++i)
{
int case1 = 0, case2 = 0, case3 = 0, case4 = 0, case5 = 0, case6 = 0, case7 = 0, case8 = 0;
new = toss[i];
cout << sets[i];
for (j = 0; j < 38; ++j)
{
if (new[i] + new[i + 1] + new[i + 2] == cases[0]) {case1++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[1]) {case2++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[2]) {case3++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[3]) {case4++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[4]) {case5++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[5]) {case6++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[6]) {case7++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[7]) {case8++;}
}
cout << case1 << " " << case2 << " " << case3 << " " << case4 << " " << case5 << " " << case6 << " " << case7 << " " << case8 << " ";
}
return 0;
}
注意:这是 uva 上的一个问题的解决方案,这里是问题的 link:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2874
如果您使用的是 c++ 编译器(显然您是!),new 是保留字,不能用作变量标识符。
使用关键字作为变量
您的程序中存在各种错误:
new
是保留关键字,不能用于命名变量。原因是它不会被视为变量,而是具有所有功能的关键字。请尝试 new1
(或保留关键字以外的任何名称)。
字符串和字符比较,连接:
(new[i] + new[i + 1] + new[i + 2] == cases[0])
这里new[i]
,(改成(new1[i]
)是一个字符,cases[0]
是一个字符串。另外,这样加字符不会concatenate 它们,但会根据它们的 ascii 值相加生成另一个字符。
相反,试试这个:
if ((new[i] == cases[0][0] && (new[i+1] == cases[0][1]) && (new[i+2] == cases[0][2]))
{case1++;}
这是创意link: https://ideone.com/0fqnCG
#include <iostream>
#include <string>
using namespace std;
int main()
{
string cases[8] = {"TTT", "TTH", "THT", "THH", "HTT", "HTH", "HHT", "HHH"};
int p, j, i;
cin >> p;
int sets[p];
string toss[p];
string new;
for (i = 0; i < p; i++)
{
cin >> sets[i];
cin >> toss[i];
}
for (i = 0; i < p; ++i)
{
int case1 = 0, case2 = 0, case3 = 0, case4 = 0, case5 = 0, case6 = 0, case7 = 0, case8 = 0;
new = toss[i];
cout << sets[i];
for (j = 0; j < 38; ++j)
{
if (new[i] + new[i + 1] + new[i + 2] == cases[0]) {case1++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[1]) {case2++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[2]) {case3++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[3]) {case4++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[4]) {case5++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[5]) {case6++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[6]) {case7++;}
if (new[i] + new[i + 1] + new[i + 2] == cases[7]) {case8++;}
}
cout << case1 << " " << case2 << " " << case3 << " " << case4 << " " << case5 << " " << case6 << " " << case7 << " " << case8 << " ";
}
return 0;
}
注意:这是 uva 上的一个问题的解决方案,这里是问题的 link:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2874
如果您使用的是 c++ 编译器(显然您是!),new 是保留字,不能用作变量标识符。
使用关键字作为变量
您的程序中存在各种错误:
new
是保留关键字,不能用于命名变量。原因是它不会被视为变量,而是具有所有功能的关键字。请尝试 new1
(或保留关键字以外的任何名称)。
字符串和字符比较,连接:
(new[i] + new[i + 1] + new[i + 2] == cases[0])
这里new[i]
,(改成(new1[i]
)是一个字符,cases[0]
是一个字符串。另外,这样加字符不会concatenate 它们,但会根据它们的 ascii 值相加生成另一个字符。
相反,试试这个:
if ((new[i] == cases[0][0] && (new[i+1] == cases[0][1]) && (new[i+2] == cases[0][2]))
{case1++;}