编写3个函数将英尺和英寸转换为米和厘米C ++?

时间:2014-05-09 12:56:56

标签: c++ function inches

我正在尝试编写一个C ++程序,该程序由3个函数组成,一个用于输入,一个用于计算,一个用于输出。该程序应该以英尺和英寸为输入,然后将米和厘米的转换值打印回用户。我认为通过引用进行调用有问题,因为我还在学习如何正确使用它,无论如何这里是代码

#include<iostream>
using namespace std;
void input(double feet , double inches);
void calc(double &feet , double &inches);
void output(double &feet , double &inches);
void main()
{
 double feet1 , inches1;
 char ans;
 do
 {
  input(feet1,inches1);
  calc(feet1,inches1);
  output(feet1,inches1);
  cout<<"Would you like to calculate again? y/n : ";
  cin>>ans;
 }
 while(ans == 'y' || ans == 'Y');
}
void input(double feet , double inches)
{
 cout<<"Enter feet : ";
 cin>>feet;
 cout<<"Enter inches : ";
 cin>>inches;
}
void calc(double &feet , double &inches)
{
 double meters , centimeters;
 meters = feet * 0.3048;
 centimeters = inches * 2.54;
}
void output(double &feet , double &inches)
{
 calc(feet,inches);
 cout<<"Converted feet to metres : "<<metres;
 cout<<"Converted inches to centimeters : "<<centimeters;
}

3 个答案:

答案 0 :(得分:3)

你有(至少)三个问题:第一个是修改传递给input函数的参数,但是当参数按值传递(即复制)时,你只是修改副本。你需要通过引用传递参数(你使用其他函数进行传递,即使你不需要它们)。

第二个问题是,在calc函数中,您将meterscentimeters声明为局部变量。一旦函数返回,这些变量超出范围,不能从其他任何地方引用。

第三个问题,这应该会给你一个编译错误,就是你尝试使用metres(检查拼写,它与calc中的不一样)和{{ 1}}来自输出函数,并且那些变量未被声明。

答案 1 :(得分:0)

你用英尺和英寸与厘米配对的方式会让你陷入困境:对于各种转换,你最终会得到大于12或厘米大于100的英寸。

如果我是你,我只保留两个变量 - 米和英尺 - 并应用它们之间的转换。 然后您可以完全删除引用,因为转换函数将返回单个值。

然后,要将英尺转换为英尺和英寸,您可以使用

(int)feet

为脚部分

(feet - (int)feet) * 12

表示英寸部分。

答案 2 :(得分:0)

void input(double feet , double inches);

如果你想改变英尺和英寸,你可以像在其他功能中一样使用引用。

void calc(double &feet , double &inches)

在此功能中,您可以更改本地&#34;米&#34;和&#34;厘米&#34;但离开这个功能时它就丢失了。 你也不用脚和英寸做任何事情,所以你不需要参考。 您可以使用类似的内容进行更改:

void calc(const double feet , const double inches, double &meters, double &centimeters)

现在你可以用&#34;输入&#34;来调用这个函数。数据(英尺,英寸)和&#34;输出&#34; (米,厘米)。

在输出函数中,我不确定是否要在其中调用calc或者是否是错误(因为calc函数也在main / while循环中调用) 但在输出功能你需要给它米和厘米。或者因为它是如此计算为您提供所需的数据,但不要在do-while循环中调用calc。

其他事项:

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

一次就够了。

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