我如何编写一个告诉星期几的程序?(泽勒全等)
How I write a program that tells the day of the week? (Zeller's congruence)
这是我目前所拥有的,但我没有得到正确的输出。
#include <iostream>
using namespace std;
int main(void) {
int year_number, month_number, day_number;
cout << "What year were you born in?n";
cin >> year_number;
cout << "What month were you born in?n";
cin >> month_number;
cout << "What day were you born on?n";
cin >> day_number;
month_number -= 2;
if (month_number < 0) {
month_number += 12;
year_number -= 1;
}
month_number *= 83 / 32;
month_number += day_number;
month_number += year_number;
month_number += (year_number / 4);
month_number -= (year_number / 100);
month_number += (year_number / 400);
day_number = month_number % 7;
cout << "The weekday number you were born on is " << day_number << endl;
return 0;
}
以下是说明:
- 将月数减少 2;
- 如果月数小于 0,则将其递增 12,将年份递减 1;
- 取月份数,乘以83再除以32;
- 将日数添加到月份;
- 将年号添加到月份;
- 将年/4 添加到月份;
- 从月中减去年/100;
- 将年/400 添加到月份;
- 找到将月份除以 7 的剩余时间;
我不确定你从哪里得到Zellers全等的那些说明。但这里有一个遵循维基百科公式的实现。
#include <iostream>
#include <math.h>
int main(void) {
std::string days[7] = { "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
int year_number = 2020;
int month_number = 1;
int day_number = 22;
if( month_number < 3 ){
month_number += 12;
year_number -= 1;
}
int century_number = year_number / 100;
year_number = year_number % 100;
int day = day_number + floor( (month_number + 1) * 13.0 / 5.0 ) +
year_number + floor( year_number / 4.0 ) +
floor( century_number / 4.0 ) -
2 * century_number;
day = day % 7;
std::cout << "The weekday you were born on is " << days[day] << std::endl;
return 0;
}
现场演示
你的另一个问题可能是你没有把你的中间结果floor
在你应该的地方。
相关文章:
- 在程序中编写脚本来编写和编译代码
- 3-3. 编写一个程序来计算每个不同单词在其输入中出现的次数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- 是否总是可以将使用递归编写的程序重写为不使用递归的程序C++,性能观点是什么?
- 编写一个不断要求用户输入的程序
- 如何用C / C++编写钢琴程序
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 我如何编写一个告诉星期几的程序?(泽勒全等)
- 我需要编写一个具有这些目标的 c++ 程序
- 编写一个程序,帮助Tudio将MIDI音符转换为名称和八度音阶
- 编写一个读取五个整数并执行一些任务的C++程序
- 如何执行用 C++ 编写的程序的运行时间?
- 如何编写无依赖的Windows程序?
- gsoap 在我调用的每一秒都会对我的应用程序(用 C 编写)进行分段错误
- 是否可以在程序集中编写dllexport(然后是dllimport)函数
- 从头开始在程序集中编写 for 循环
- 在 C++ 控制台应用程序中编写 SQL 查询
- 如何在这个程序中编写关于递归的基本情况
- 为独立的 c++ 应用程序/模块编写解释器