虽然循环,真的不明白

时间:2013-05-06 14:45:25

标签: c++ loops

嗨我试着做一个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 个答案:

答案 0 :(得分:2)

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

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

就是这样,只需用你上面编写的代码替换“整串代码”。

答案 1 :(得分:0)

while循环中实现此内容将如下所示:

bool flag=false;
while(!flag){
    ...
    if(<find a match>) flag=true;
}

答案 2 :(得分:0)

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

为什么在整个比较(文件处理)完成后你想再做一次?

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

while(true)
{
   //your code
}

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

答案 3 :(得分:0)

假设您了解for循环,我认为您可以根据whilefor的比较轻松理解while循环。

请参阅,您使用了for循环:

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

这里有3个关键点。

  1. int r=0这是你的初始条件。
  2. r<row这是保持循环运行的条件。
  3. r++这是循环每次迭代结束时发生的事情。
  4. 重新说明上述陈述:

      

    最初考虑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个循环实际上是相同的。