编写一个结构,以下列方式处理输入数据。输入是一个整数,表示操作的数量。然后是操作本身:
向容器和元素本身添加元素的操作:ADD 5;
检查元素是否存在并输出到控制台的操作如果元素存在则输出“YES”,如果未找到元素则输出“NO”:PRESENT 3;
向控制台输出容器的元素总数:COUNT。
例如: 在输入处:
四
加 5
礼物 3
礼物 5
数数
回答:
不
是的
一
编码:
#include <iostream>
#include <set>
#include <algorithm>
#include <string>
using namespace std;
struct SET{
set<int>s;
int add_num(int n){cin>>n; return s.insert(n);}
void present_num(int n);
void COUNT();
};
void SET::present_num(int n){
cout << (s.count(n) ? "YES" : "NO") << "\n"; // если количество не
} //0, тогда "YES", если 0, "NO".
void SET::COUNT(){
cout << s.size() << endl;
}
int main(){
int m, n;
SET s;
for (int i = 0; i < m; ++i){
string cmd;
cin >> cmd;
if(cmd == "ADD") {
s.add_num(n);
}
else if (cmd == "PRESENT"){
s.present_num(n);
}
else if (cmd == "COUNT") s.COUNT();
}
return 0;
}
错误:
您没有阅读命令的数量。您有一个循环,其中计数器与变量进行比较
m,但您尚未对其进行初始化。在进入循环之前执行此操作,然后根据需要计算尽可能多的命令。您正在使用
char字符串进行存储。char是一个字符。你需要使用string. 函数strcmp——strncmp它们对类型进行操作char*。您当然可以使用它,但它是一种更特定于 C 的方法,而不是 C++。未来已经到来,string你可以和运营商进行比较==。小错误:
你声明了一个变量
n,你把它传递给函数,但你没有在任何地方写它。相反,您正在从cin函数中读取add_num。如果要传递参数,则必须使用它cin而不是 . 在确定团队后,您需要阅读它的主要内容。没有使用变量
item。你可以删除它。出于某种原因,您
int从中返回add_num,并且没有使用该值。为什么你的老师错了
强烈建议您使用
strncmp,据我了解,他们没有解释原因。这就是区别:strcmp- 完全比较字符串,所以我们在调用时不指定长度。strncmp-仅比较前 n 个字符。这意味着如果你比较这样的字符串:
答案将是 0,就像字符串相等,但实际上它们不相等。