首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++课程:基督教假日计算器

C++课程:基督教假日计算器
EN

Stack Overflow用户
提问于 2011-05-16 20:57:37
回答 2查看 1.6K关注 0票数 0

基本上,我试着为考试练习完成这个考试式的问题。除了最后一个问题,我知道怎么做所有的事情,跟上课有关。我有点明白,但我不知道怎么把它应用到这个问题上。有人能给我一些关于我如何创建C++类的起点或技巧(甚至可能的答案)吗?任何帮助都是非常感谢的。问题如下。很抱歉有这么长的时间。

1800年,数学家卡尔·弗里德里希·高斯提出了一种计算新公历(1752年大英帝国引入的)复活节假期日期的算法。为此,需要计算许多表达式:两个术语M和N,在给定的年份y中包含以下值:

代码语言:javascript
复制
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,则为3月份复活节假期的总和。否则d+e-9是4月的复活节,除非:

( a)实现一个C/C++函数,将给定的一年作为参数,打印复活节假期的日期。(10马克)其他基督教节日可以从复活节开始计算:耶稣受难节是复活节前的星期五。棕榈星期日是复活节前的星期日。星期天是复活节后的7周。扬升日是Whit周日之前的10天。注:4月和6月为30天,3月和5月为31天。

b)设计/描述算法,以确定基督教节日“耶稣受难节”、“棕榈日”、“扬升”和“惠特星期日”的日期。(这个答案不需要源代码) (15马克)

高斯描述的复活节计算算法中的术语M和N也可以使用以下表达式计算:

代码语言:javascript
复制
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

地板函数舍入一个值-在数学库的数学.h,这是一个C函数与原型双层( double );

( c)生成一个C++类来实现一个基督教假日计算器。它应该具有表示日期的日期、月份和年份的私有属性(成员变量)和计算术语M和N的私有方法。默认构造函数应该将所有属性设置为0。应该可以使用set()方法更改年份,并使用get()方法检索日和月。该类还应该包含不同假日的计算方法-例如: computeEaster()。

EN

回答 2

Stack Overflow用户

发布于 2011-05-16 22:13:31

...how我会继续创建一个C++类吗?

创建类很简单:

代码语言:javascript
复制
class foobar
{
public:
private:
};

那里!你现在有了一门课。那门课可以是你想要的任何东西。填写适当的公共和私人部分。

任何人都可以给我一些起点或建议..。

至于如何使用类来解决给定的问题,以下是大致顺序的一般步骤:

  1. 确定了问题的需求。需要将这些需求作为责任列表的是什么?您的程序需要做些什么来完成这些requirements?
  2. Group --这些职责--一起形成一个内聚类对象。这个类对象对问题的整体解决有何贡献?这个对象将如何成为used?
  3. Express,并在每个对象的单元测试中捕获该使用情况。在执行此操作时,您可以假装该类已经实现,所需的任何成员函数都是available.
  4. Finally,实现该类,因此单元测试通过了.

最后一个注意事项,正如David的评论所指出的,将原来的问题逐字复制并粘贴到您的问题中是个坏主意。人们将(实质上)不那么倾向于阅读它。如果你确切地说明了你遇到了什么麻烦,并且剔除了所有不相关的部分,你就可以增加回应的可能性。

票数 0
EN

Stack Overflow用户

发布于 2011-05-16 22:25:22

因此,您只能创建一个类。要么您根本不知道如何创建一个类,要么您不知道如何创建这个特定的类。

要创建一个类,请使用class关键字:class { int i; };。如果尚未在C++中创建任何类,则可能需要重新获取此类或另一个C++编程类。

相反,如果你的问题是你不知道如何将教授的类设计转换成C++代码,那么你就不会像你感觉的那样孤独。从模棱两可的英语设计语句转换到具体的C++程序是困难的,也是我们获得巨额报酬的原因。

让我们一步一步地看一遍。

生成一个C++类来实现一个基督教假日计算器。

听起来很简单,不是吗?

代码语言:javascript
复制
class ChristianHolidayCalculator {
};

好了,这一步已经完成了!

它应该具有表示日期的日期、月份和年份的私有属性(成员变量)。

您知道属性成员变量是什么吗?你需要检查课本的索引吗?去吧,我等你。..。哦,你回来了!您一定已经看到,成员变量是一个变量的集合,这些变量由类声明限定范围,并且在每次创建该类的对象时都存在(作为一个组)。

代码语言:javascript
复制
class ChristianHolidayCalculator {
    double width;
    double height;
    double depth;
};

哦,你以为我会把它们命名为“年”、“月”和“日”?不,那是你的作业,不是我的。既然你告诉我们你知道怎么算,我就把细节留给你。

和一种计算术语M和N的私有方法。

还有两个词汇:方法私有。去复习你的课程材料吧。

您肯定会发现,方法是class作用域中的函数。方法是特殊的,因为它们仅针对手头类的对象调用。

至于“私人”,那我就交给你了。今年你肯定学到了一些关于classes的知识吧?

代码语言:javascript
复制
class ChristianHolidayCalculator {
    double width;
    double height;
    double depth;
    void GuitarTune() {
      // Code to tighten strings goes here.
    }
};

由于此方法必须计算MN,因此需要在某个地方存储结果。嗯,也许你需要更多的成员变量?

最后,您的老师提到了set()get()compute()方法。这是他告诉你该创造哪些公共方法的速记方式。他可能不是字面上的int get() { ... }。他可能意味着您需要创建一组方法,它们在名称和设计上都是相似的:

代码语言:javascript
复制
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() ... { ... }
};

这是如何开始创建类的。我希望这给了你开始的动力。祝你考试好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6023347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档