-2

嗨,我正在尝试做一个 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();
}
4

4 回答 4

2

这很简单,所以有一堆代码你想在标志为零时继续执行它,所以这只是

int flag = 0;
while (flag == 0)
{
    // whole bunch of code
}

就是这样,只需将“整个代码”替换为您在上面编写的代码。

于 2013-05-06T14:53:44.223 回答
0

在循环中实现它while看起来像这样:

bool flag=false;
while(!flag){
    ...
    if(<find a match>) flag=true;
}
于 2013-05-06T14:51:25.610 回答
0

所以基本上,你有一个包含一些数据的文件。而且,您接受来自用户的一些数据。然后您在两组的适当字段之间进行比较。

完成整个比较(文件处理)后,为什么还要重新做一遍?

如果你只是想运行一个无限循环,你可以这样做:

while(true)
{
   //your code
}

你也可以用 for 循环做同样的事情。事实上 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() 中,您执行您在问题中发布的内容。

于 2013-05-06T14:54:12.300 回答
0

假设您了解for循环,我认为您可以while根据 和 的比较很容易地for理解循环while

看,你使用了一个for循环:

for (int r=0;r<row;r++){
   // do stuff
}

这里有3个关键点。

  1. int r=0这是你的初始条件。
  2. r<row这是保持循环运行的条件。
  3. r++这就是每次循环迭代结束时发生的事情。

重新表述上述陈述:

考虑r最初等于 0,而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 个循环实际上是相同的。

于 2013-05-06T14:55:38.607 回答