C++类:基督教假期计算器
C++ Classes: Christian Holiday Calculator
基本上,我正在尝试完成这个考试风格的问题以进行考试练习。我知道如何做所有事情,除了最后一个问题,与课程有关。我有点明白,但不知道如何将其应用于这个问题。谁能给我一些起点或提示(甚至可能的答案)来说明我将如何创建一个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 月 26 日,在这种情况下,复活节是在 4 月 19 日。- 结果是 4 月 25 日,在这种情况下,如果 d 是 28 并且a 大于 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
floor 函数向下舍入一个值 – 在数学库中 math.h 中,这是可作为C功能与原型双地板(双);
c) 生成一个C++类来实现基督教节日计算器。它应具有表示日期的日、月和年以及用于计算项 M 和 N。默认构造函数应设置所有属性均为 0。应该可以使用set() 方法并使用 get() 方法检索日和月。该类还应包含不同假期 – 示例:计算复活节()。
。我将如何创建一个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
,因此您需要某个地方来存储结果。嗯,也许你需要更多的成员变量?
最后,你的老师提到了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() ... { ... }
};
您可以开始创建类。我希望这能为您提供入门所需的动力。祝你考试顺利。
- 使用 BMI 计算器对C++中的数字进行四舍五入的问题
- 我在c ++矩阵计算器程序中找不到错误
- C++计算器,不能单独除以 0
- 如何正确解析子字符串,以便它们对我的新手计算器有效?
- Arduino 基础 2 计算器无法C++工作
- 需要有关我的平均计算器代码的建议
- C++ - 在我尝试制作一个简单的计算器时有一个"uninitialized local variable y used"警告
- 野牛/flex:计算器将双精度值解释为整数,所以我添加了 YYSTYPE 双精度 #define 但我有多个编译错误
- C++计算器运算符
- 使用WIN32 API的击球平均计算器
- RPN计算器c++错误处理和多个运算符
- C++查找用于构建单行计算器
- 如何修复这个基本计算器
- 用于加法和减法的十六进制计算器
- 桌面计算器出现问题.C++程序设计语言
- 如何对堆栈中的所有项目求和?Postfix计算器
- RPN计算器使用头文件进行计算操作和堆栈;用于堆栈的矢量
- 如何在我的基本计算器中循环遍历数组
- 如果 GPA 计算器的语句问题
- C++类:基督教假期计算器