Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 数组和索引_C++_Arrays_Flags - Fatal编程技术网

C++ 数组和索引

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>

如何在数组中输入数字以忽略重复条目

例如,如果我在数组中放入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>>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;
}