我想确保每次要求输入值时用户输入唯一值

时间:2018-04-18 04:03:27

标签: loops for-loop if-statement input

cout<<"Enter numbers from 0 to 8 in any order"<<endl;

for(int i=0;i<=8;i++){
    cout<< "Input "<<i<<endl;
    cin>>index[i];
 }

所以这里是代码的片段。我需要应用什么条件来防止用户多次输入相同的值?我知道ifelseswitch可以是用户,但如何将以前的输入与新输入进行比较?

if(index[1]==index[2]||index[3]==index[4]||.... )以外的任何内容?

1 个答案:

答案 0 :(得分:0)

你需要做很多事情才能完成。在您拥有的场景中,do-while循环似乎很有希望,因为您必须继续接受输入,直到您有0到8之间的8个唯一数字。

步骤/算法:

  1. index int[]分配所需的内存,现在说int index[8]

  2. 有一个变量来存储计数器,以便成功插入到数组index中的值的数量。

  3. 运行do-while循环,其中while条件为counter < 8
  4. do块内,指定一个临时int来存储用户的输入。我们称之为int temporary_input; cin>>temporary_input;
  5. 完整性检查给定输入是否为>= 0 && <= 8
  6. 现在从index[]扫描0 to counter,根据条件int boolean或if the number already exists响应的函数>
  7. 如果该号码不存在,请将其分配给index[counter]并增加counter
  8. 这是一个可能有用的程序

    // arr : integer array of the values
    // l   : current length of the integer array
    // n   : the number that needs to be checked for existence
    int check_input(int *arr, int l, int n) {
        for (int i=0; i<l ; i++) {
            if (arr[i] == n) {
                // if number already exists; return true (1)
                return 1;
            }
        }
        return 0;
    }
    
    // Main
    int main() {
        cout << "Enter numbers from 0 to 8 in any order"<<endl;
        // Initialize required variables to store the inputs and counter.
        int index[8];
        int i=0;
        // Repeat until the size is 8. (0-7 = 8 values)
        do {
            int temporary_input;
            cin>>temporary_input;
            // Check if input is less than equal to 8 or greater than equal to 1
            if (temporary_input >= 1 && temporary_input <= 8) {
                // Check if the number given as input already exists
                if (check_input(index, i, temporary_input) == 0) {
                    // if number doesn't exist, assign it to index
                    index[i] = temporary_input;
                    i++;
                }   
            }
        } while (i < 8);
    
        // Print values
        for (int i=0; i<8; i++) {
            cout<<index[i]<<" ";
        }
        return 0;
    }
    

    示例输入:

    2 2 1 8 3 4 7 7 5 6 5 4
    

    示例输出:

    Enter numbers from 0 to 8 in any order
    2 1 8 3 4 7 5 6 
    

    这是running example