2014-05-20 44 views
-1

这是刹车的部分,zod1zodA是向量。在向量中,我存储int。不能告诉为什么它崩溃导致它没有给出错误如果陈述过于复杂?

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

问题:
1,如果是在复杂
2我可以使用这样的载体在if语句解决数学(抱歉,不能更好地解释)语句
3如果2的问题是真的,我应该如何解决呢

说明: 变量名是在我自己的语言(抱歉,如果它看起来怪异) 数值为全零(当然zod1 [U] = 0) 增加了整个功能(变量goin克至函数正确传递,我知道我用了一些不必要的东西)

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"; 
     } 
    } 

    } 
} 
+0

1.基于意见。对我来说不是,对于很多其他人来说可能是。 2.和3.你是什么意思?在数学中,你是否只用条件解决任何事情?我非常怀疑它。这就像问问题“我可以通过询问来解决任何问题吗?”如果k甚至<?“ – luk32

+0

变量崩溃时的值是什么?什么是堆栈跟踪? –

+0

第一季度可以挽救:“是否有一个相对简单的表达式?”。 – MSalters

回答

1

编辑: 错误是在这里:

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

是,如果过于复杂

声明不,我认为只用一个'或'就很简单。但是,如果zodA[t]总是小于10,那么你如果条件可以写为:

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

我可以使用这样的载体在if语句解决数学(抱歉 无法解释更好)

是的,你可以。

如果2的问题是真的,我应该如何解决呢

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

+0

谢谢你!菜鸟的错误:) – user3102621

+0

没问题。很高兴帮助。 –