如果陈述过于复杂吗?

时间:2014-05-20 07:59:40

标签: c++ vector

这是刹车的一部分,zod1 zod2 zodA是向量。在向量中,我存储了int。不能告诉它为什么崩溃导致它没有错误

if(zod1[u]+zod2[y]==zodA[t] || (zod1[u]+zod2[y])%10==zodA[t])

问题:
1 if语句是否复杂 2我可以使用这样的向量来解决if语句中的数学问题(抱歉能解释得更好)
3如果2问题属实,我应该如何解决呢

说明: 变量名用我自己的语言(抱歉,如果它看起来很奇怪) 所有值都为零(ex zod1 [u] = 0) 添加了整个函数(转到函数的变量被正确传递,我知道我使用了一些不必要的东西)

void calc(vector<char> zodis1, vector<char> zodis2, vector<char> zodisAts,int zo1,int zo2,int zoA)
{int i,keliamas=0;
int k =0;
   vector<int> zod1(0);
   vector<int> zod2(0);
   vector<int> zodA(0);
   for(i=0;i<zodis1.size();i++)
   {
       zod1.push_back(0);
   }
      for(i=0;i<zodis2.size();i++)
   {
       zod2.push_back(0);
   }
      for(i=0;i<zodisAts.size();i++)
   {
       zod2.push_back(0);
   }
int   u=zodis1.size()-1;
int   y=zodis2.size()-1;
int  t=zodisAts.size()-1;

   if(zod1[u]+zod2[y]==zodA[t] || (zod1[u]+zod2[y])%10==zodA[t])
    {//if((zod1[u]+zod2[y])/10==1)
    {
        keliamas=1;
    }
     if(u==0||y==0||t!=0)
      {
         if(keliamas==1)
         {


         }
      }
        u--;
        y--;
        t--;

    }
   else
    {if(zod1[u]!=9)
        zod1[u]=zod1[u]+1;
     else
     {  if(u!=zodis1.size()-1)
         u++;
        else
        {
            cout<<"something wrong man";
        }
     }

    }
}

1 个答案:

答案 0 :(得分:1)

编辑: 错误在这里:

   for(i=0;i<zodisAts.size();i++)
   {
       zod2.push_back(0); // should be zodA
   }
  

if语句是否复杂

不,我认为只用一个'或'就很简单了。但是,如果zodA[t]始终小于10,那么您的if条件可以写为:

if ( (zod1[u]+zod2[y])%10==zodA[t] )
  

我可以使用这样的矢量来解决if语句中的数学问题(抱歉   无法解释更好)

是的,你可以。

  

如果2个问题属实,我应该如何解决呢

如果它编译然后崩溃,那么你可能正在访问越界索引。检查您的指数是否小于矢量大小。