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];
}
所以这里是代码的片段。我需要应用什么条件来防止用户多次输入相同的值?我知道if
和else
或switch
可以是用户,但如何将以前的输入与新输入进行比较?
if(index[1]==index[2]||index[3]==index[4]||.... )
以外的任何内容?
答案 0 :(得分:0)
你需要做很多事情才能完成。在您拥有的场景中,do-while
循环似乎很有希望,因为您必须继续接受输入,直到您有0到8之间的8个唯一数字。
为index
int[]
分配所需的内存,现在说int index[8]
。
有一个变量来存储计数器,以便成功插入到数组index
中的值的数量。
do-while
循环,其中while条件为counter < 8
do
块内,指定一个临时int
来存储用户的输入。我们称之为int temporary_input; cin>>temporary_input;
>= 0 && <= 8
index[]
扫描0 to counter
,根据条件int
if the number already exists
响应的函数>
index[counter]
并增加counter
这是一个可能有用的程序
// 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