Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;利用2020年10月4日是星期日这一事实来确定任何一年的星期几 我必须写一个C++程序,它使用十月42020是星期日,确定在1/1/1900和31/12/2500之间的任何一天的日期。 我不知道从哪里开始。 我应该使用什么方法? 我不能使用任何外部库、OOP、结构或枚举。 我只想知道逻辑。_C++_Date - Fatal编程技术网

C++;利用2020年10月4日是星期日这一事实来确定任何一年的星期几 我必须写一个C++程序,它使用十月42020是星期日,确定在1/1/1900和31/12/2500之间的任何一天的日期。 我不知道从哪里开始。 我应该使用什么方法? 我不能使用任何外部库、OOP、结构或枚举。 我只想知道逻辑。

C++;利用2020年10月4日是星期日这一事实来确定任何一年的星期几 我必须写一个C++程序,它使用十月42020是星期日,确定在1/1/1900和31/12/2500之间的任何一天的日期。 我不知道从哪里开始。 我应该使用什么方法? 我不能使用任何外部库、OOP、结构或枚举。 我只想知道逻辑。,c++,date,C++,Date,这里的方法非常简单,只涉及一点数学(模运算) 将开始日期视为第0天。以天数为单位获取该日期。 (以天数形式获取日期输入) 获取输入日期与日期0之间的天数差: dateDiff=inputDateInDays-day0(保留该数字的符号) 现在考虑第7版< /代码>星期日。假设day0 mod 7=0,以便 dateDiff mod 7=dayofweek,其中1为周一,2为周二,6为周六。就这样 TL;DR(伪代码): day0=//以天数表示的原始日期 dateInput=//您的输入日期 d

这里的方法非常简单,只涉及一点数学(模运算)

将开始日期视为第0天。以天数为单位获取该日期。 (以天数形式获取日期输入)

获取输入日期与日期0之间的天数差:
dateDiff=inputDateInDays-day0
(保留该数字的符号)

现在考虑<代码>第7版< /代码>星期日。假设

day0 mod 7=0
,以便
dateDiff mod 7=dayofweek
,其中1为周一,2为周二,6为周六。就这样

TL;DR(伪代码):

day0=//以天数表示的原始日期
dateInput=//您的输入日期
dayInput=//将dateInput转换为天数
dateDiff=dayInput-dayInput

/ 0你有多少C++经验?您可以为周创建一个
enum
,为月创建一个
struct
,该周返回给定数字1-7/0-6的一周中的某一天,该月有x个数字和天数,可能还有一周的起始日。然后,创建一个函数,该函数可以运行几个月,并向后移动,创建一个月结构(并将其存储在数组
日历
)。您还必须使用相同的方法添加年份,并注意闰年和非闰年(每3/4 100年一次)。顺便说一句,关于堆栈溢出的社区指南说,您不应该发布像您这样的不精确问题。相反,自己做这项工作,并返回特定的bug或问题。这也是一种比在你搞不懂的时候寻求帮助要好得多的编码心态——真的要先投入工作,否则你就学不到。所以,下次发帖子时要小心,让它对任何浏览该网站的人都有用。祝你好运!请记住:每年被4整除都是闰年,除了被100整除的年份,但是如果这些百年被400整除,那么它们就是闰年。请注意,这是开源的,并且有这样一个功能(在C中)。见例。您可能会将现有的C代码修改为C++。请参阅的C代码,并从中寻找灵感。你也可以学习我的C++源代码。我必须在不使用结构或枚举的情况下解决这个问题。我花了一些时间试图建立逻辑后问道。问题是我不能使用任何外部库。尽管如此,我还是为不准确的信息感到抱歉,因为这是我在StackOverflow上的第一篇文章。问题是我必须在不使用结构或枚举的情况下完成它。只需将2020年10月4日作为一个相对点,然后使用嵌套if-else,检查闰年、31天的月份等,然后计算日期accordingly@UnikMask的答案为您提供了所需的结构。不需要结构或枚举,只需应用从0向上的天数计数,并使用modulo
%
运算符筛选天、月、年等。使用
if
/
if else
语句确定月或年的正确天数。
day0 = // Your original date in number of days
dateInput = // Your input date
dayInput = // Convert dateInput into number of days
dateDiff = dayInput - dayInput

// 0 <= dateDiff % 7 <= 6. So figure which number corresponds to which day.
return dateDiff % 7