C++ 数组和索引
如何在数组中输入数字以忽略重复条目 例如,如果我在数组中放入6,然后放入3,那么尝试在数组中插入6将导致拒绝6,因为它已经在数组中C++ 数组和索引,c++,arrays,flags,C++,Arrays,Flags,如何在数组中输入数字以忽略重复条目 例如,如果我在数组中放入6,然后放入3,那么尝试在数组中插入6将导致拒绝6,因为它已经在数组中 #include <iostream> using namespace std; int main() { int x,y; int number; int arr[5]; for (x=0; x<5; ) { cout<<"enter a number:"<<endl; cin>
#include <iostream>
using namespace std;
int main()
{
int x,y;
int number;
int arr[5];
for (x=0; x<5; )
{
cout<<"enter a number:"<<endl;
cin>>number;
bool replace = True;
for (y=0; y<x; y++)
{
if (number != arr[y])
{
cout << "try next time" << endl;
replace = False;
break;
}
}
if (replace)
{
arr[x] = number;
x++;
}
}
return 0;
}
set会做你想做的事。不过,这是不可转位的
您可以使用为您提供随机访问,并在相同的基础值列表上强制唯一性
顺便说一句-不建议直接询问代码。您真正想要的是一套。集合不能包含重复的元素
是C++中的集合的引用。
只需将集合用作数字的容器即可。当您尝试添加一个副本时,它将被自动拒绝。您不需要数组,而是需要一个名为Hashtable的数据结构
或者,您可能需要查找名为关联数组的数据结构。您不应该为此使用数组。例如,您应该使用std::set。或者,如果需要将数组作为数据结构,可以封装数组(例如,通过类中的std::vector实现),并定义访问数组元素的特定函数。此外,您可以持有std::set以提供对现有元素的快速检查。应该是:
int arr[5] = {0,0,0,0,0};
从以下行中删除x++:
for (x=0;x<5;x++)
你有太多的x++,你没有预设arr,也许更多的风格比错误
你怎么知道它不起作用了?
在if number==arr[y]中放入一些调试代码,如果replace则在for循环中取出x++,这样您只会在输入新数字时增加该计数
另外,如果您只想运行循环五次,那么外部for循环应该只指向x,看起来您希望读取一系列数字,以消除任何重复。 似乎唯一数字的最大数量为5
仔细看看你增加x的地方。@jboy-如果这是家庭作业,请通过编辑你的问题添加适当的标记。如果你发布代码,展示你迄今为止所做的尝试,社区也会更容易接受。好的,我会展示我的代码,请帮助我。什么是“假”、“真”?发布不可编译且不断变化的代码非常烦人。@jboy:Steve实际上是在帮助您编辑代码。试着从中学习。如果这真的是一道考试题。。。哇..伙计们,我知道这种事情既粗鲁又太普遍,但我们希望Stack Overflow成为一个受欢迎的地方。因此,你应该礼貌地拒绝回答这些问题。我特别关注Blender和rerun;受挫的人会得到一个愚蠢的通行证。你能给我密码吗?C++的密码块?@ JBY,不。对不起。只需将集合用作数字的容器即可。当您尝试添加重复项时,它将被自动拒绝。@jboy:此分配的代码不应依赖于IDE。我的意思是,如果你再次输入相同的数字,它将拒绝,因为你输入的数字已经在索引中,这是我的代码:@jboy-你要找的单词是‘因为’我只是一个学生,我想找出代码中的错误,这样我就可以修复它,就在这一次,请…@jboy-在评论中发布代码很难弄清楚,也很难找到新的回复者。将代码粘贴到问题文本中,选择它,然后按“101010”图标设置格式。谢谢。@steve-我在哪里可以找到那个图标?这是作业-把他指向std:set是适得其反的,因为他在做作业告诉他的事情。希望std:set下周能上场:@KevinDTimm:我不知道,现在已经是12月了。我原以为现在大多数学校都会进入考试模式。std:set可能要到下学期一月份才会出现。你说得对,他们是。但对大多数大学生来说,1月是下周,即使下学期还有一个月。但在美国,这是我们的考试周,这是我们关于数组的考试,在数组中做一个程序,这是我们老师认为我们可以运行的,但没有x=0的xtt,它的错误抱歉,这并没有帮助,尤其是因为你帖子中的代码不是你正在使用的-它永远不会编译。我尝试过它,但它是错误的,我是否也删除了FLG?包括使用命名空间std;int main{int x,y;int number;int arr[5]Xi=0;席不认为我能帮助你。当我按照上面的说明,我创建一个符合你的要求的可编译的可执行文件。因为你在报告更多错误时不张贴改变的代码,我不知道你在试图编译什么。因为代码被修改,我建议每个迭代B。e贴在pastebin上并从你的帖子中指向。@Steve-谢谢:{-希望能有一些道具能帮助你两次发布正确的解决方案,因为他只得到了他应该从OP中得到的修改的一半。这些是遗漏的2个,在我上面的评论中提到,在我下面的回答中有一个-我 希望他能在“代码回顾”中指出错误,请阅读常见问题解答-
bool replace=true;
for (y=0;y<x;y++)
{
if (number == arr[y])
{
replace=false;
break;
}
}
if (replace)
{
arr[x]=number;
x++;
}
else if(number == arr[x])
{
arr[x]=number;
cout << "try next time"<<endl;
}
cout << "try next time"<<endl;
replace=false;
for (x=0;x<5;)
int n = 0; /* The number of unique numbers read in so far */
for {;;}
cout << "enter nmber" << endl;
cin >> number;
for (x=0; x < n; ++x) {
if (number == arr[x]) goto L1; /* I love messing with peoples head by using this goto */
}
arr[n] = number;
++n;
if (n == 5) break;
L1:
continue;
}