C++类:基督教节假日计算器帮助
基本上,我试图完成这种考试风格的考试练习题。我知道如何去做最后一个问题,而不是上课。我有点得到他们,但不知道如何将其应用于问题。任何人都可以给我一些关于如何创建一个C++类的起点或提示(或甚至可能的答案)?任何帮助深表感谢。问题在下面。道歉多久。C++类:基督教节假日计算器帮助
在1800数学家卡尔·弗里德里希·高斯提出的算法计算复活节假期的新公历 日期( 年1752在大英帝国介绍)。对于这种需要数量的表达式来进行评估: 两个术语M和N,这对于给定的y年保存值:
year M N
1700-1799 23 3
1800-1899 23 4
1900-2099 24 5
2100-2199 24 6
The expressions are:
a = y mod 19
b = y mod 4
c = y mod 7
d = (19a + M) mod 30
e = (2b + 4c + 6d + N) mod 7
如果22 + d + e为小于32比这个总和是三月的复活节假期。 否则d + e-9是4月复活节的日子,除非: - 结果是4月26日,在这种情况下,复活节是在4月19日而不是 - 结果是4月25日,在这种情况下,复活节开启四月18日当d是28和 一个大于10
a)实施,鉴于一年作为参数的C/C++函数将 打印出来的复活节假期的日期。 (10分) 其他基督教节日可以从复活节日期算起: 耶稣受难日是复活节前的星期五。 棕榈星期日是复活节前的星期日。 惠特周日是复活节后的7周。升天日在惠特星期日前10天。 注意:4月和6月长30天,而3月和5月长31天。
b)设计/描述算法,用于识别假期“耶稣受难日”,“棕榈星期天”,“升天”和“星期日”的假期的基督徒的日期 。 (没有源代码需要此答案)(15分)
在由高斯描述的复活节计算算法术语M和N也 可以使用下面的表达式计算:
k = floor(y/100)
p = floor((13 + 8k)/25)
q = floor(k/4)
M = (15 − p + k − q) mod 30
N = (4 + k − q) mod 7
地板函数向下舍入一个值 - 在数学库math.h中,这是 作为一个C函数与原型double floor(double)一起提供;
c)生成一个C++类来实现基督教节假日计算器。它 应该具有代表日期的 日,月和年的私有属性(成员变量),以及用于计算条款M和N的私有方法 。默认构造函数应将所有属性设置为 。它应该是可能的使用 set()方法更改年份,并使用get()方法检索日期和月份。 该类还应包含针对不同假期的计算方法 - 例如:computeEaster()。
...我将如何去创建一个C++类?
创建一个类很简单:
class foobar
{
public:
private:
};
有!你现在有一个课foobar。该课程可以是任何你想要的。酌情填写公共和私人部分。
任何人可以给我一些出发点或提示...
至于如何使用就如何解决特定的问题,这里有大致顺序的一般步骤类:
- 确定问题的要求。什么需要解决?
- 将这些要求改为一系列责任。您的计划必须做什么来满足这些要求?
- 将这些责任组合在一起形成一个有凝聚力的类对象。这个类对象如何对问题的整体解决方案做出贡献?这个对象将如何被实际使用?
- 在每个对象的单元测试中表达和捕获该用法。在这样做的时候,你可以假装那个类已经实现了,并且你需要的任何成员函数都可用。
- 最后,执行该类,以便单元测试通过。
大卫的评论已经指出,最后一个注意事项是,将原始问题复制并粘贴到您的问题中是一个坏主意。人们将会(基本上)不太愿意阅读。如果您明确了解您遇到的问题并删除所有不相关的部分,您可以增加回复的可能性。
所以,你坚持创建一个类。要么你不知道如何创建一个类在所有的,或者你不知道如何创建这个特定的类。
要创建班级,请使用class
关键字:class { int i; };
。如果你还没有用C++创建任何类,那么你可能需要重新编写这个或另一个C++编程类。
如果你的问题是你不懂如何将你的教授的课程设计转换成C++代码,那么你并不像你想象的那么孤单。从不明确的英文设计陈述转换到具体的C++程序是很困难的,也是我们得到大笔资金的原因。
让我们一步一步通读它。
生成一个C++类来实现基督教节假日计算器。
听起来很简单,不是吗?
class ChristianHolidayCalculator {
};
在那里,那一步就完成了!
它应该有私有属性(成员变量),代表
你知道什么属性或成员变量是日期的日,月,年?你需要检查教科书的索引吗?继续,我会等。 ...哦,你回来了!您一定已经看到成员变量是一组变量,这些变量的范围由类声明确定,并且每次创建该类的对象时会弹出(作为一个组)。
class ChristianHolidayCalculator {
double width;
double height;
double depth;
};
哦,你以为我会给他们命名为“年”,“月”和“日”吗?不,那是你的作业,不是我的。既然你告诉我们你知道如何做数学,我会把具体细节留给你。
和用于计算的条款M和N的私有方法
还有两个词汇:方法和私人。去审查你的课程材料。
您肯定发现方法是class
范围内的函数。方法的特殊之处在于,它们仅在与手头类的对象相关时才被调用。
至于“私人”,好吧,我会把它留给你。你今年肯定学到了一些关于class
的东西吗?
class ChristianHolidayCalculator {
double width;
double height;
double depth;
void GuitarTune() {
// Code to tighten strings goes here.
}
};
因为这种方法具有计算M
和N
,你需要在某处储存结果。嗯,也许你需要更多的成员变量?
最后,你的老师提到集(),的get()和计算()方法。这是他告诉你哪些公共方法可以创建的速记方式。他大概不是字面意思int get() { ... }
。他可能意味着你需要创建一个组的方法,在名称中的所有相似和设计:
class ChristianHolidayCalculator {
double width;
double height;
double depth;
void GuitarTune() {
// Code to tighten strings goes here.
}
int getRed() { /* return red value */ }
int getGreen() { /* return green value */ }
int getBlue() { /* return blue value */ }
void setRed(int newRed) { /* assign red value */ }
void setGreen(int newGreen) { /* guess */ }
... calculateEaster() ... { ... }
};
有你如何开始创建类。我希望这可以推动你开始所需的努力。祝你考试顺利。
哇,谢谢。您的字面意思是您付出努力的传奇。非常感谢! – 2011-05-18 07:12:25
要了解如何创建C++类,请阅读C++有关类的书中的章节! – 2011-05-16 20:58:40
只有当你期望我们中的一个人完成你的任务时,才能给我们确切的复活节算法。我们不是。如果你在一个C++类中,并且你不知道如何为一个任务创建一个类,那么无论你是否有一个可怕的老师,或者你还没有学会你应该做什么。实施你能做的事,在课堂上学习,如果你在这里发布具体问题。 – 2011-05-16 21:04:56