基本上,我试着为考试练习完成这个考试式的问题。除了最后一个问题,我知道怎么做所有的事情,跟上课有关。我有点明白,但我不知道怎么把它应用到这个问题上。有人能给我一些关于我如何创建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,则为3月份复活节假期的总和。否则d+e-9是4月的复活节,除非:
( a)实现一个C/C++函数,将给定的一年作为参数,打印复活节假期的日期。(10马克)其他基督教节日可以从复活节开始计算:耶稣受难节是复活节前的星期五。棕榈星期日是复活节前的星期日。星期天是复活节后的7周。扬升日是Whit周日之前的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地板函数舍入一个值-在数学库的数学.h,这是一个C函数与原型双层( double );
( c)生成一个C++类来实现一个基督教假日计算器。它应该具有表示日期的日期、月份和年份的私有属性(成员变量)和计算术语M和N的私有方法。默认构造函数应该将所有属性设置为0。应该可以使用set()方法更改年份,并使用get()方法检索日和月。该类还应该包含不同假日的计算方法-例如: computeEaster()。
发布于 2011-05-16 22:13:31
...how我会继续创建一个C++类吗?
创建类很简单:
class foobar
{
public:
private:
};那里!你现在有了一门课。那门课可以是你想要的任何东西。填写适当的公共和私人部分。
任何人都可以给我一些起点或建议..。
至于如何使用类来解决给定的问题,以下是大致顺序的一般步骤:
。
最后一个注意事项,正如David的评论所指出的,将原来的问题逐字复制并粘贴到您的问题中是个坏主意。人们将(实质上)不那么倾向于阅读它。如果你确切地说明了你遇到了什么麻烦,并且剔除了所有不相关的部分,你就可以增加回应的可能性。
发布于 2011-05-16 22:25:22
因此,您只能创建一个类。要么您根本不知道如何创建一个类,要么您不知道如何创建这个特定的类。
要创建一个类,请使用class关键字:class { int i; };。如果尚未在C++中创建任何类,则可能需要重新获取此类或另一个C++编程类。
相反,如果你的问题是你不知道如何将教授的类设计转换成C++代码,那么你就不会像你感觉的那样孤独。从模棱两可的英语设计语句转换到具体的C++程序是困难的,也是我们获得巨额报酬的原因。
让我们一步一步地看一遍。
生成一个C++类来实现一个基督教假日计算器。
听起来很简单,不是吗?
class ChristianHolidayCalculator {
};好了,这一步已经完成了!
它应该具有表示日期的日期、月份和年份的私有属性(成员变量)。
您知道属性或成员变量是什么吗?你需要检查课本的索引吗?去吧,我等你。..。哦,你回来了!您一定已经看到,成员变量是一个变量的集合,这些变量由类声明限定范围,并且在每次创建该类的对象时都存在(作为一个组)。
class ChristianHolidayCalculator {
double width;
double height;
double depth;
};哦,你以为我会把它们命名为“年”、“月”和“日”?不,那是你的作业,不是我的。既然你告诉我们你知道怎么算,我就把细节留给你。
和一种计算术语M和N的私有方法。
还有两个词汇:方法和私有。去复习你的课程材料吧。
您肯定会发现,方法是class作用域中的函数。方法是特殊的,因为它们仅针对手头类的对象调用。
至于“私人”,那我就交给你了。今年你肯定学到了一些关于classes的知识吧?
class ChristianHolidayCalculator {
double width;
double height;
double depth;
void GuitarTune() {
// Code to tighten strings goes here.
}
};由于此方法必须计算M和N,因此需要在某个地方存储结果。嗯,也许你需要更多的成员变量?
最后,您的老师提到了set()、get()和compute()方法。这是他告诉你该创造哪些公共方法的速记方式。他可能不是字面上的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() ... { ... }
};这是如何开始创建类的。我希望这给了你开始的动力。祝你考试好运。
https://stackoverflow.com/questions/6023347
复制相似问题