c+中的非重复数组值+; 我编写了一个C++程序,它从用户那里输入并输入数组中的那个数。此外,我还提到,如果一个用户输入了一个号码,而这个号码已经存在于列表中。然后控制台只显示一条消息。但不知何故,当我输入一个独特的元素时,它仍然会显示给我
不允许重复值 请看这段代码,告诉我哪里错了c+中的非重复数组值+; 我编写了一个C++程序,它从用户那里输入并输入数组中的那个数。此外,我还提到,如果一个用户输入了一个号码,而这个号码已经存在于列表中。然后控制台只显示一条消息。但不知何故,当我输入一个独特的元素时,它仍然会显示给我,c++,C++,不允许重复值 请看这段代码,告诉我哪里错了 void addElement(int i){ if (rear==-1 && top == 0){ rear++; Array[rear]=i; } else { for(int l=1 ; l<=rear ; l++){ if((Array[l]) == i){ cout<<"
void addElement(int i){
if (rear==-1 && top == 0){
rear++;
Array[rear]=i;
}
else {
for(int l=1 ; l<=rear ; l++){
if((Array[l]) == i){
cout<<"\n*Duplicate value not allowed*\n";
}
else{
rear++;
Array[rear] = i;
}
}
}
}
void addElement(int i){
如果(后==-1&&top==0){
后++;
数组[后]=i;
}
否则{
对于(int l=1;l您的逻辑有缺陷:
for(int l=1 ; l<=rear ; l++){
if((Array[l]) == i){
cout<<"\n*Duplicate value not allowed*\n";
} else {
rear++;
Array[rear] = i;
}
}
for(int l=1;l我发现您的逻辑有两个问题
在for循环中,不是从第一个元素开始迭代,而是从
索引后的第二个元素是1
一旦发现重复项,您应该退出for循环,如果
找不到重复项,然后只插入值,而不是
多次这样做
请参见下面的代码
void addElement(int i) {
if (rear==-1 && top == 0) {
rear++;
Array[rear]=i;
}
else {
for(int l=0 ; l<=rear ; l++) {
if((Array[l]) == i){
cout<<"\n*Duplicate value not allowed*\n";
return;
}
}
rear++;
Array[rear] = i;
}
}
void addElement(int i){
如果(后==-1&&top==0){
后++;
数组[后]=i;
}
否则{
对于(int l=0;lYou应该注意,当您检查副本时,元素是预先插入的。因此它肯定会告诉您找到了副本。@xhg谢谢,我找到了它。。为什么不使用std::set
?这是因为我不知道它@ChristianHackl@AhmadHabib:好吧,现在你知道了!:)我用逻辑检查为**l=0**首先,它也不起作用。“i”是用户输入的元素,与列表中以前的元素一起检查。是的,我用l=0尝试过,它也不起作用,但在找到重复项时我没有尝试返回……它起作用了,谢谢。我可以使用“break”吗而不是返回?除此之外,还有一件事您应该看到,正如答案中所建议的,如果您使用break,那么for循环之后的语句也将被执行,但我们不希望它们执行,因为找到了重复的语句。谢谢您的帮助:)