不确定为啥代码重复某些输出

Posted

技术标签:

【中文标题】不确定为啥代码重复某些输出【英文标题】:Unsure why code is repeating certain outputs不确定为什么代码重复某些输出 【发布时间】:2022-01-20 18:04:38 【问题描述】:

我正在为学校的实验室做这个,但是,在我的代码中,我得到了正确的输出,但由于某种原因,我的输入重复了自己。我不确定他们为什么要这样做,并尝试以几种不同的方式编辑我的代码以解决问题,但无济于事。

这是我的原始代码:

#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

const double PI = acos(-1); // arccos(-1) produces the value pi
double DirectTime (double rDestination) 
return 2.0 * sqrt(fabs(rDestination - 1.496e11) / 10) / 86400.0;


const double MU = 1.3274745e20;
const int SEC_IN_DAY = 86400;
const double R_EARTH = 1.496e11;
const double R_VENUS = 1.08e11;
const double R_JUPITER = 7.778e11;
const double R_PLUTO = 5.91e12;


double ConvertSecondsToDays(double seconds);
double CubedSum(double v1, double v2);
double HohmannTime(double r1, double r2);

double ConvertSecondsToDays(double seconds) 
double days = 0;
days = seconds / SEC_IN_DAY;
cout << days;
return days;


double CubedSum(double v1, double v2) 
    return pow(v1+v2,3);


double HohmannTime(double r1, double r2 = R_EARTH) 
return ConvertSecondsToDays( PI * sqrt(CubedSum(r1, r2)/ (8 * MU)));



int main() 
  
  printf("%-10s%-15s%-s\n", "Planet", "Hohmann Time", "Direct Time");
  printf("%-10s%-15.2f%-.2f\n", "Venus", HohmannTime(R_VENUS, R_EARTH), DirectTime(R_VENUS));
  printf("%-10s%-15.2f%-.2f\n", "Jupiter", HohmannTime(R_JUPITER, R_EARTH), DirectTime(R_JUPITER));
  printf("%-10s%-15.2f%-.2f\n", "Pluto", HohmannTime(R_PLUTO, R_EARTH), DirectTime(R_PLUTO));


return 0;

当一切都说完了,它应该输出以下内容:

Planet    Hohmann Time   Direct Time
Venus     145.88         1.49
Jupiter   996.83         5.80
Pluto     16643.47       17.57

但是,我的一直输出这个:

Planet    Hohmann Time   Direct Time
145.88Venus     145.88         1.49
996.503Jupiter   996.50         5.80
16643.5Pluto     16643.47       17.57

我认为问题在于我为函数打印了什么,或者我让它们在某处重复输出而没有意识到。

附言

这是我在堆栈上的第一个问题。我听说很多人问不好的问题,所以如果我做错了什么,请告诉我,这样我可以做得更好!

感谢您的帮助!!

【问题讨论】:

因为cout &lt;&lt; days. 你先生,真是个天才!这有效并修复了一切!我没有意识到,因为我有它 cout,它在最后输出它。太感谢了!只是为了我,我将来可以做些什么来提出更好的问题?另外,我如何为您的评论点赞? 嗨,我认为你的问题很好。代码足够紧凑,可以重现问题轻松查看。您包括了实际输出和预期输出,这非常重要。所以,第一篇文章做得很好。 【参考方案1】:

问题是您的ConvertSecondsToDays 函数无意中通过以下方式将其结果打印到标准输出:

cout << days;

这与main 中的real 输出混合在一起。删除cout 电话,你应该会很好。

【讨论】:

以上是关于不确定为啥代码重复某些输出的主要内容,如果未能解决你的问题,请参考以下文章

我不确定为啥,以及“静态”标签的作用[重复]

为啥在代码“456”+1中,输出是“56”[重复]

找到最大强度给定要在左右跳过的元素数量。请告诉我为啥我的代码对某些测试用例给出了错误的输出?

为啥对话框会在不刷新的情况下删除其内容?

为啥这个简单的 R Shiny 输出不使用 ggplot 绘图?

为啥某些 LLVM 标准库标头包含其他标头但 GCC 不 [重复]