首页 > 解决方案 > 我的 seconds 变量没有正确存储

问题描述

正如标题所说,我的 seconds 变量没有正确存储,我不确定为什么。我尝试在第 8 行的用户输入之后插入一个 cout 语句,但由于某种原因它没有存储,即输出将是 -1.75474e+4。谢谢 :)

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

double readSeconds()
{
    double seconds;
    cout << "Enter the time (in seconds)" << endl;
    cin >> seconds;

    //value less than zero
    while (seconds < 0) {
        cout << "The time must be zero or more" << endl;
        cout << "Enter the time (in seconds)" << endl;
        cin >> seconds;
    }
    return seconds;
}
double calculateEarthDistance(double seconds)
{
    const double gravityEarth = 9.8;
    double earthDistance = 0.5 * gravityEarth * pow(seconds, 2);
    return earthDistance;
}
double calculateMoonDistance(double seconds)
{
    const double gravityMoon = 1.6;
    double moonDistance = 0.5 * gravityMoon * pow(seconds, 2);
    return moonDistance;
}

//The displayResults function MUST NOT call readSeconds, calculateEarthDistance, or calculateMoonDistance.
void displayResults(double seconds, double earthDistance, double moonDistance)
{

    cout << "The object traveled " << fixed << setprecision(4) << earthDistance << fixed << setprecision(2) << " meters in " << seconds << " on Earth." << endl;
    cout << "The object traveled " << fixed << setprecision(4) << moonDistance << fixed << setprecision(2) << " meters in " << seconds << " on Moon." << endl;
}

int main()
{
    if (1) { //when true
        double seconds;
        seconds == readSeconds();
        cout << seconds;
        if (seconds == 0) {
            exit(0);
        }
        double earthDistance = calculateEarthDistance(seconds);
        double moonDistance = calculateMoonDistance(seconds);
        displayResults(seconds, earthDistance, moonDistance);
    }

} //end program

标签: c++

解决方案


您使用了等效运算符(==),而不是分配运算符(=)

seconds == readSeconds(); // bad
seconds = readSeconds();  // good

推荐阅读