0

我正在为学校做一个关于数学的项目。为此,我正在用 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 循环中。请帮忙。

4

1 回答 1

3

divisionneeded从未在此代码中实际初始化,并且当您尝试使用它时可能会导致各种不好的事情,然后您可以在此处执行此操作:

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

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

其他一些评论:

如果您希望更多人做出回应,您应该考虑制作一个简短的、自包含的、正确的(可编译的)示例。使您发布的代码片段能够被阅读它的人直接编译,只需将其复制并粘贴到他们的编辑器中并编译它,人们就更容易回答您的问题。在编译这段代码之前,我不得不花几分钟改变一些东西,其他人可能不会去做。

我认为如果需要的除法实际上是一种在需要时设置的类型,它可能更有意义bool。再次确保初始化它。

我还建议使用 c++ 样式转换:

while (b == (int)b)

变成:

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

如果您在转换方面确实遇到问题,或者您希望用其他代码替换此代码,这使得以后搜索变得更加容易。

于 2013-11-14T14:21:32.923 回答