我正在编写一个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<<"\n*Duplicate value not allowed*\n";
}
else{
rear++;
Array[rear] = i;
}
}
}
}
答案 0 :(得分:1)
我看到你的逻辑存在两个问题,
1
请参阅以下代码
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;
}
}
答案 1 :(得分:0)
你的逻辑存在缺陷:
for(int l=1 ; l<=rear ; l++){
if((Array[l]) == i){
cout<<"\n*Duplicate value not allowed*\n";
} else {
rear++;
Array[rear] = i;
}
}
在这里检查第二个元素是否等于i
(顺便说一下,为什么不从索引0处的第一个元素开始?),如果不是你将i
添加到数组中。然后继续检查下一个元素是否等于i
。因此,您将始终首先添加i
,然后发现它在数组中。
相反,您应首先检查它是否在数组中,并且只有在您选中所有元素之后才添加它或打印消息。