这是我面临的问题。用户要输入一个数字,如果该数字在数组中,则我希望将此数字打印为有效数字,否则,我要将其打印为无效数字。
但是此代码不起作用;它仅打印Not Valid
我看了其他类似的代码。他们使用了bool
标志。
为什么在此程序中需要使用标志,何时需要使用标志?
#include<iostream>
using namespace std;
int main()
{
const int SIZE=6;
int arry[SIZE]={5658845,4520125,1230493,4856970,2078594,2393741};
int number;
cout <<"Enter the number"<<endl;
for(int i=0; i<SIZE; i++)
{
cin>>number;
if(arry[i]==number)
cout<<"This is valid number"<<endl;
else
cout << "This is not valid number"<<endl;
}
return 0;
}
答案 0 :(得分:3)
实现代码的方式是在搜索数组的同时读取用户的输入。您已经实现了一个猜谜游戏:“第一个数字是X吗?” “第二个数字正好是X吗?”依此类推,对于数组中的每个数字。
这就是您想要的吗?否则,如果您只希望用户输入1个数字,然后检查该数字是否存在于数组中的任何位置,则需要在输入搜索循环之前读取用户的输入(此时bool
进入播放),例如:
#include <iostream>
using namespace std;
int main()
{
const int SIZE = 6;
const int arry[SIZE] = {5658845, 4520125, 1230493, 4856970, 2078594, 2393741};
int number;
cout << "Enter the number" << endl;
cin >> number;
bool found = false;
for(int i = 0; i < SIZE; ++i)
{
if (arry[i] == number)
{
found = true;
break;
}
}
if (found)
cout << "This is valid number" << endl;
else
cout << "This is not valid number" << endl;
return 0;
}
或者,使用std::find()
算法而不是手动搜索:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
const int SIZE = 6;
const int arry[SIZE] = {5658845, 4520125, 1230493, 4856970, 2078594, 2393741};
int number;
cout << "Enter the number" << endl;
cin >> number;
const int *end = arry + SIZE;
if (find(arry, end, number) != end)
cout << "This is valid number" << endl;
else
cout << "This is not valid number" << endl;
return 0;
}
答案 1 :(得分:2)
只要想查看实例或条件发生,就可以使用标志。您可以按照以下步骤编写程序。实际上,flag只是一个变量,您可以在其中保存条件以便进一步检查。
const int SIZE=6;
int arry[SIZE]={5658845,4520125,1230493,4856970,2078594,2393741};
int number;
cout <<"Enter the number"<<endl;
cin >> number;
int flag = 0;
for(int i=0; i<SIZE; i++{
if(arry[i]==number){
flag=1;
break;
}
}
if(flag==1)
cout<<"This is valid number"<<endl;
else
cout << "This is not valid number"<<endl;
在这里,我们必须检查循环是否为真的条件。因此,我们使用flag以便可以在循环外获得结果。
在这种情况下,您也可以执行以下操作:
int flag=0;
for(int i=0; i<SIZE; i++{
if(arry[i]==number){
cout<<"This is valid number"<<endl;"
flag=1;
break;
}
}
if(flag!=1)
cout << "This is not valid number"<<endl;
答案 2 :(得分:1)
我的代码不起作用
如果要检查数组中的值,请检查数组中的所有元素。 但是你没有。
我必须在c ++中使用flag吗?
标志是一种状态。因此,在许多代码中,定义标志并将其用作选项。
像这样
const int SINGLE_THREAD = 0;
const int MULTI_THREAD = 1;
/...
bool select_server_type(int option)
{
//....
}
select_server_type(SINGLE_THREAD);
但是,您不必在所有情况下都使用标志。
在这种情况下,您可以像这样检查它们。
(我知道这是非常不安全的代码。但是在您的水平上,该代码将是可以理解的代码)
#include<iostream>
using namespace std;
//check all element in array
bool match(int* arr, int size, int value)
{
for(int i = 0; i < size; ++i)
{
if(arr[i] == value)
return true;
}
return false;
}
int main()
{
const int SIZE=6;
int arry[SIZE]={5658845,4520125,1230493,4856970,2078594,2393741};
int number;
cout <<"Enter the number"<<endl;
cin>>number;
if(match(arry, SIZE, number))
cout<<"This is valid number"<<endl;
else
cout << "This is not valid number"<<endl;
}