虽然循环,真的不明白
嗨即时尝试做一个while循环,即时通讯新的编程和在线阅读我不能真正得到我的头,我用标志来显示输入的名称匹配名称数据文件,我想这样做,这样以后我知道它不符合再次循环它的整个事情,我不知道如何实现这一点,虽然循环,真的不明白
{
clrscr();
cout << "This Is The Option To Delete A Record\n";
char yesno;
char search;
char name[21];
int flag = 0;
cout << "Enter Employee Name : ";
Input(name,20);
for (int r=0;r<row;r++)
{
if(strnicmp(name, emp[r].first_name, strlen(name)) == 0)
{
flag = 1;
clrscr();
cout << "Employee Number - " << emp[r].employee_number << endl;
cout << "Name - " << emp[r].first_name << " " << emp[r].surname << endl;
cout << "Department Number - " << emp[r].department_number << endl;
cout << "Week Ending Date - " << emp[r].weekend << endl;
cout << "Delete This Record (Y/N)? : ";
Input(yesno);
yesno = tolower(yesno);
if (yesno == 'y')
{
emp[r].deleted = true;
cout << "Record Has Been Deleted";
}
else if (yesno == 'n')
{
cout << "Record Hasn't Been Deleted";
}
}
}
if (flag == 0)
{
cout << "There Are No Matching Records" << endl;
}
pressKey();
}
在while
循环看起来就像实现这个这个:
bool flag=false;
while(!flag){
...
if(<find a match>) flag=true;
}
这很简单,所以有一堆你想要的代码继续执行它,而标志是零,所以这只是
int flag = 0;
while (flag == 0)
{
// whole bunch of code
}
就是这样,只是替换你上面写的代码“一大堆的代码”。
所以基本上,你有一个数据文件。而且,您还接受来自用户的一些数据。 然后您在两组的适当字段之间进行比较。
为什么要在完成整个比较(文件处理)后再重做一遍?
,如果你只是想运行一个无限循环,你可以这样做:
while(true)
{
//your code
}
您可以循环做同样的用也。 forfact for循环和while循环都是相同的,除了语法。即无限循环。
for (int r=0;r<row;r++)
{
if(r==row-1)
{
r=0;
}
}
我猜你想要做的是,一旦一组用户输入的不将文件内容相匹配,要采取另一套,再等相匹配。
所以你不需要无限或总是执行循环。
只要让你的比较模块成为一个单独的函数,它应该接受一组用户输入。您所做的只是接受用户输入并显示结果。并为用户提供重新输入输入的选项。
下面是你想要的简单算法。
int main()
{
char a='a';
while(a != '~')
{
TakeUserInput();
if(PerformComparison())
{
cout << "Success";
break;
}
}
}
内TakeUserInput()
你做所有这些cin <<
设置一个全局数组或设置全局变量。您也可以按照您的意愿终止程序cin << a
。
和PerformComparison()内部,你做你在这里发布你的问题。
即时通讯真正新到C++,我想要做的是如果我输入的东西,不匹配数据文件中的数据,它会再次循环该过程 – user2355072 2013-05-06 15:08:42
所以,这意味着,你想运行整个“带用户输入”和“执行比较“流量再次?那么这就是我在答案中所说的。接受用户输入并将其传递给一个单独的函数进行比较。如果它返回true,请再次输入用户输入 – 2013-05-06 15:11:31
@ user2355072现在查看我的答案 – 2013-05-06 15:18:35
假设你了解for
循环,我认为你可以很容易地理解while
循环,根据for
和while
的比较。
看,你使用的for
循环:
for (int r=0;r<row;r++){
// do stuff
}
这里有3个关键点。
-
int r=0
这是您的初始状态。 -
r<row
这是保持循环运行的条件。 -
r++
这是每次循环结束时发生的情况。
要改写上述语句:
考虑
r
等于零最初,而r
小于row
,递增r
。
现在,我们可以很容易地看到while
回路是如何攻打我们:)为了实现这一点,考虑以下while
循环示例:
int r=0; //(1)
while(r<row){ //(2)
//do stuff
r++; //(3)
}
看,现在的2个循环做几乎同样的事情。
如果你想要做的基于标记的操作,你也可以喜欢一个无限循环:
while(1==1){
if(some condition)
break;
}
以及无限for
循环:
for(;;){
if(if some condition)
break;
}
同样,2个循环是几乎一样。
如果你的问题是关于'while'循环,你不应该发布的代码在某处包含关键字'while'吗? – mah 2013-05-06 14:48:04
并重构你的代码,将部分移动到对你有意义的函数中并调用它们。这样更容易发现错误。 – Trax 2013-05-06 14:49:53
你在想'continue'关键字吗? – 2013-05-06 14:49:53