确保在数组中输入并存储唯一的输入

Ensure unique input is entered and stored in an array

本文关键字:输入 存储 唯一 确保 数组      更新时间:2023-10-16

这个程序可以吗,或者可以改进(但很简单)吗?如何确保没有重复输入数字?

int n;
int array[9];
cout<<"Enter Number Between 9-0 Only"<<endl;
for(int i = 0; i<=10; i++){
    cout<<"Enter Number" <<(i+1)<<endl;
    cin >> n;
    if((n >= 0) && (n <=9)){
       array[i]=n;
     }
        else{
        cout<<"Numbers from 0-9 onlyn"<<endl;
        break;
    }
}

(编辑)完成,编译代码

要检查这些数字是否用于更高的性能,请尝试以下操作(使用Jack Radcliffe的工作代码):

#include <iostream>
using namespace std;
int main()
{
  int n = 0;
  int array[9] = {0};
  bool isUsed[10] = {0};
  for(int i = 0; i < 9; i++) 
  {
    cout << "Enter Number " << (i + 1) << endl;
    cin >> n;
    if((n >= 0) && (n <= 9))
    {
      if (isUsed[n] == false)
      {
        array[i] = n;
        isUsed[n] = true;
      }
      else
      {
        cout << "Number has already been used." << endl;
        i--;
      }
    }
    else 
    {
      cout << "Numbers from 0-9 only." << endl;
      i--;
    }
  }
  return 0;
}

对于这种简单的代码来说,优化并不是完全必要的,但这似乎是一种练习,所以为什么不练习优化的代码呢?

虽然有两个突出的问题,但大部分都很好。

首先,您有一个大小为9的数组,但由于从0开始for循环并一直到10,因此您将接受11个数字。

其次,由于您有它,所以如果输入的数字不在0和9之间(包括0和9),for循环将中断。这意味着,如果输入了无效数字,则将少于9个数字放入数组。改变整个循环来阅读这个,你应该很好:

for(int i = 0; i < 9; i++) {
    cout << "Enter Number " << (i + 1) << endl;
    cin >> n;
    if((n >= 0) && (n <= 9))
       array[i] = n;
    else {
        cout << "Numbers from 0-9 onlyn" << endl;
        i--;
    }
}

整个fire部分是对的,但我去掉了else语句中的break,并添加了I-。我补充说,在这样的情况下,当用户被提示重新输入号码时,输入号码将位于正确的索引处。

我希望这会有所帮助。