如何修复if语句的输出

时间:2019-04-09 02:09:31

标签: c++

我正在编写一个程序,该程序以 MM DD YYYY 的格式读取日期,并输出该日期是星期几。这是实际的问题(我知道这很长,但是可能会帮助解决我的问题):

编写一个程序,确定给定日期的星期几。您 可以发明自己的复杂算法,并考虑到特殊情况 year年规则,以及日历的更改,但是在这种情况下, 寻找熟悉的事物的感觉。还有谁可能需要计算 时间跨度较大的日期值?历史学家处理日期,但是 通常不根据它们进行计算。但是,天文学家需要知道 太阳系中跨越轨道的事件之间的时间差 数百年。查阅天文学,您会发现其中有一个 日期的标准表示方式,称为儒略日数(JDN)。 此值是公元前4713年1月1日以来经过的天数。 给定一个日期的JDN,有一个简单的公式可以说明日期 周:

  

DayOfWeek =(JDN + 1)%7

结果在0到6的范围内,0代表星期日。

唯一剩下的问题是如何计算JDN,事实并非如此。 简单。该算法计算添加的几个中间结果 一起给JDN。我们来看一下这三个的计算 中间值。

如果该日期来自公历(晚于10月15日, 1582),然后使用以下公式计算intRes1;否则,让 intRes1为零。

  

intRes1 = 2 –年/ 100 +年/ 400(整数除法)

第二个中间结果计算如下:

  

intRes2 = static_cast(365.25 *年)

我们使用以下公式计算第三个中间值:

  

intRes3 = static_cast(30.6001 *(月+1))

最后,JDN的计算方式如下:

  

JDN = intRes1 + intRes2 + intRes3 +天+ 1720994.5

您的程序应在以下程序中适当使用返回值功能 解决这个问题。这些公式需要九位有效数字;你可以 必须使用整型long和浮点型double。您的 程序应适当提示用户输入日期;这应该 还要正确标记输出。使用适当的编码风格并添加注释以 记录所需的算法。

您的程序将从文件中读取。该文件包含以下格式的日期: mm dd yyyy

我尝试将if(DayOfWeek =)语句更改为if语句,最终语句为else,但是无论日期如何,它都只会输出“ Monday”。

int main() {
    int JDN = 0;
    int DayOfWeek = 0;
    int res1 = 0;
    int res2 = 0;
    int res3 = 0;
    int day = 0;
    int month = 0;
    int year = 0;
    string final;
    ifstream inData;
    string file;
    cout << "Enter File Name: ";
    cin >> file;
    try {
        inData.open(file.c_str());
    }
    catch (int e) {
        return -1;
    }
    if (inData.is_open()) {
        inData >> month;
        inData >> day;
        inData >> year;
        if (month > 10 && day > 15 && year > 1582) {
            res1 = 2 - year / 100 + year / 400;
        }
        else {
            res1 = 0;
        }
        res2 = static_cast<int>(365.25 * year);
        res3 = static_cast<int>(30.6001 * (month + 1));
        JDN = res1 + res2 + res3 + day + 1720994.5;
        DayOfWeek = (JDN + 1) % 7;
        if (DayOfWeek = 0) {
            cout << "Sunday";
        }
        if (DayOfWeek = 1) {
            cout << "Monday";
        }
        if (DayOfWeek = 2) {
            cout << "Tuesday";
        }
        if (DayOfWeek = 3) {
            cout << "Wednesday";
        }
        if (DayOfWeek = 4) {
            cout << "Thursday";
        }
        if (DayOfWeek = 5) {
            cout << "Friday";
        }
        if (DayOfWeek = 6) {
            cout << "Saturday";
        }
    }
    else {
        cout << "File Not Found";
    }
    return 0;
}

该程序在一周中的每一天只应输出一行,因此每天只输出一行。我怎么了?

1 个答案:

答案 0 :(得分:1)

比较为“ ==”; “ =“是作业。

您应该一直在收到编译器警告,请仔细检查输出。