C++学校项目

C++ School Project

本文关键字:项目 学校 C++      更新时间:2023-10-16

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

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

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

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

其他一些评论:

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

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

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

while (b == (int)b)

成为:

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

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