2016-02-28 81 views
0

我的程序将英尺和英寸转换为米就好了,但它总是会在米和英尺转换之间添加随机数量的英尺。我无法弄清楚为什么。任何建议将不胜感激。 EX)它表示1.3208026m等于8英尺4英寸,实际上是4英尺4英寸。在C++中将仪表转换为英尺和英寸时存在问题

#include <cmath> 
#include <iostream> 
#include <iomanip> 
using namespace std; 


int feet; 
double meters, inches; 

int main() 
{ 

     cout << "Enter feet " << endl; 
     cin >> feet; 
     cout << "Enter inches " << endl; 
     cin >> inches; 

     inches = feet * 12 + inches; 
     meters = inches/39.370; 

     cout << setprecision(8) << meters << "m" << endl << endl; 

     cout << "Enter meters. " << endl; 
     cin >> meters; 
     inches = meters * 39.37; 
     while (inches > 12) 
     { 
      if (inches > 12) 
       inches = inches - 12; 
      feet++; 

     } 

    cout << feet << " ft and " << setprecision(8) << inches << "in" << endl; 

    return 0; 
} 
+1

编辑您的问题以添加代码,选中它,然后单击{}按钮以告知编辑器它是代码。无论如何,我怀疑是一个精确问题。 – Robinson

+0

再看看你的while/if循环,具体来说,它的范围是:( –

+0

如果你已经加入了你的调试器,你会看到'脚'增加是否'英寸> 12':( –

回答

1

您需要在第一次转换后将脚重置为零。

+0

这工作对我来说,我将所有的变量重置为零,并重新编程了几个不同的数字,他们都正确地出来了。非常感谢你! –

+0

其他问题关于while循环没有用大括号解决,或者甚至通过删除if来评论。输入某些值可能会给出错误的结果,例如输入0.30480060米会在0英尺和12英寸处出现,而不是1英尺和0英寸。解决此问题的方法是在第二部分中使用整数变量来计算英寸数(米到英尺和英寸),并将条件改为'英寸> = 12'。 if条件是不必要的重复。 –

0
if (inches > 12) 
     inches = inches - 12; 
    feet++; 

不需要大括号,否则你的脚会使你失败。

+1

上面和下面都有大括号,或者他们是否需要与开始和结束线位于同一行? –

相关问题