2013-11-14 86 views
-1

我正在做关于数学的学校项目。为此,我正在用C++编写一个计算器,用加法和减法进行乘法和除法。我需要两个数字都是小数的乘法操作。我的代码如下所示:C++学校项目

int divisionneeded; 
int countuntilten; 
countuntilten = 9; 
while (b == (int)b) 
{ 
    countuntilten = 9; 
    temp = b; 
    while(countuntilten > 0){ 
    b = b + temp; 
    countuntilten--; 
    cout << b << endl; 
    } 
    cout << "test" << endl; 
    divisionneeded++; 
    if(b == (int)b){ 
    break; 
    } 
    //checkint is a library function 
    checkb = checkint(b); 
} 
cout << "Test" << endl; 
temp = a; 
count = b; 
while(count>0) 
{ 
    a+=temp; 
    count--; 
} 
cout << a << endl; 
while(divisionneeded>0) 
{ 
    countuntilten = 10; 
    while(countuntilten > 0){ 
    countuntilten--; 
    } 
    cout << "TEst" << endl; 
    divisionneeded--; 
} 
ans = a; 
cout << "TESt" << endl; 

用于乘法,当两者都是小数时。我需要帮助,因为看起来程序在第三个while循环中卡住了。请帮忙。

+3

而不是'cout <<“TEst”<< endl;'尝试调试'cout <<“DivisionNeeded ='<< divisionneeded << endl; –

+1

此外,我总是初始化我的变量。内存位置已经 –

+0

我认为这是问题部门需要进行初始化 – drescherjm

回答

3

divisionneeded实际上从来不初始化这个代码并且可导致各种不好的事情当你再尝试使用它,然后您可以在这里做的:

while(divisionneeded>0) 
{ 
    countuntilten = 10; 
    while(countuntilten > 0){ 
    countuntilten--; 
    } 
    cout << "TEst" << endl; 
    divisionneeded--; 
} 

尝试初始化所有变量习惯问题。用-Wall或类似编译可能会指出这个问题,试图使用一个未初始化的变量。让你的编译器通过查看它产生的警告来帮助你。事实证明,这实际上似乎运行在我的系统没有崩溃,因为divisionneeded已由我的编译器设置为0,但不能保证这通常会发生,所以我认为这可能是未定义的行为。

其他一些意见:

如果您想了解更多的人作出回应,你应该考虑制定Short, Self Contained, Correct (Compilable), Example。让你发布的代码片段能够被读者直接编译,只需将它复制并粘贴到他们的编辑器中并编译它就可以让人们更容易地回答你的问题。在编译这些代码之前,我必须花几分钟时间来改变它,其他人可能不会去做这个工作。

我认为这可能会更有意义,如果需要的部门实际上是一个bool类型,在需要时被设置。再次确保您初始化它。

我也建议使用C++风格的转换:

while (b == (int)b) 

变为:

while (b == static_cast<int>(b)) 

这使得很多更轻松地搜索以后,如果你确实有铸造或一些问题你想用别的东西代替这个代码。

+0

好点,如果第一个'while'循环被跳过,'divisionneeded'的值是任意的。 –