我正在为学校做一个关于数学的项目。为此,我正在用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循环中卡住了。请帮忙。
答案 0 :(得分: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))
如果您在转换时遇到问题,或者希望用其他内容替换此代码,这会使以后搜索更容易。