if条件下的for循环

时间:2014-05-14 09:11:45

标签: c++ arrays if-statement for-loop

所以,我目前正在开展OOP流程图项目。

这里要指出的是,我想确保程序不会在彼此之间绘制2个形状“以及窗口边界”,所以我应该给出一个IF条件,以便在其中,程序引入界面!

这是我的代码的一部分。

 case  ADD_START:
         pO->PrintMessage("Action: add start statement, Click anywhere in the drawing Area");
         Statement*statS;
         pIn->GetPointClicked(P);   
         if ( (for (int i = 0; i < NumOfFigures; i++)
         { //Test
            i == NumOfFigures;
         } ) 
             && (P.x>30) && (P.x< UI.width-(30+UI.ELLIPSE_R1)) && (P.y>2*UI.TlBrWdth+3) 
         && (P.y<UI.height - (UI.StBrWdth+UI.ELLIPSE_R2)) )
             {   
                 statS=new Start();
                 statS->setPoint(P);
                 statS->DrawStatement(pO,pIn);
                 pStat[NumOfFigures] = statS;
                 NumOfFigures++;
             }
      break;

在这里你可以看到pStat是指向抽象类Statement的指针数组,但是,我想将运行时绘制的形状的地址添加到指针数组中,因此,在if条件下,我可以创建一个for循环来检查该数组中每个形状的边界,以检查P(这是一个点)

P.x != pStat[NumOfFigure]->x;

但是这里的问题是它给for语句中的if循环错误,说

ERROR : Expected an expression "

我该怎么办?

2 个答案:

答案 0 :(得分:3)

您所遵循的语法是无效的语法,用于比较循环

中的值集合

您可以在单独的循环中测试NumOfFigures并维护一些flag变量,并使用该变量在if条件中进行比较

bool flag=true;
for (int i = 0; i < NumOfFigures; i++)
{ 
    //Test
    if(i != figuresArray[i]){  //here you'l need to use your array from where you want to compare values
        flag=false;
        break;// its not matching, so break loop to test for further values
    }
}

//use flag variable in your if condition
if (flag==true && (P.x>30) && (P.x< UI.width-(30+UI.ELLIPSE_R1)) && (P.y>2*UI.TlBrWdth+3) 
     && (P.y<UI.height - (UI.StBrWdth+UI.ELLIPSE_R2)) )
         {   
             statS=new Start();
             statS->setPoint(P);
             statS->DrawStatement(pO,pIn);
             pStat[NumOfFigures] = statS;
             NumOfFigures++;
         }

答案 1 :(得分:0)

您无法在任何条件语句中添加loop。这个概念是你可以检查任何条件,如果它是真的做某事,如果没有,做其他事情。

if( /*expression*/){

  //do  something, including method call, looping construct etc.
}
else if( /*another condition*/){
  //do some other thing
}
 //..... other condition
else{
  // do something
}

修改

loop块内写if

if( condition ){
 for( int i=0;i<NumOfFigures;i++)
 {
  statS=new Start();
  statS->setPoint(P);
  statS->DrawStatement(pO,pIn);
  pStat[i] = statS; // should be i , not numOfFigures
 }
}