C++ 设计一个存储时间和日期的结构。编写一个函数,以在分钟内找出两次之间的差异

C++ 设计一个存储时间和日期的结构。编写一个函数,以在分钟内找出两次之间的差异,c++,struct,C++,Struct,我正在自己完成一本奥雷利的教科书,我现在在结构学院。编程练习之一是: 设计一个存储时间和日期的结构。编写一个函数,以在分钟内找出两次之间的差异 我相信我已经把结构部分搞定了,但是我对函数的不同感到困惑。我很懒,没有考虑到分开的天数,但问题是分开的时间,所以我要假装他们谈论的只是24小时的一天。我可以在函数的参数中调用结构吗?我当然试过了。任何建议都会有帮助。谢谢 迄今为止我的代码(未完成): #包括 整数差(结构日期和时间); int main() { 返回0; } 结构日期时间{ 国际日; 半

我正在自己完成一本奥雷利的教科书,我现在在结构学院。编程练习之一是:

设计一个存储时间和日期的结构。编写一个函数,以在分钟内找出两次之间的差异

我相信我已经把结构部分搞定了,但是我对函数的不同感到困惑。我很懒,没有考虑到分开的天数,但问题是分开的时间,所以我要假装他们谈论的只是24小时的一天。我可以在函数的参数中调用结构吗?我当然试过了。任何建议都会有帮助。谢谢

迄今为止我的代码(未完成):

#包括
整数差(结构日期和时间);
int main()
{
返回0;
}
结构日期时间{
国际日;
半个月[20];
国际年;
int秒;
整数分钟;
整小时;
}超级\u日期\u时间={
29,
“五月”,
2013,
30,
30,
23
};
整数差(日期和时间)
{
int second1=45;
分钟内1=50;
整小时1=24;

是的,您可以将结构作为参数传递给函数

process(struct date_time T1) or
process(struct date_time *T1) (struct pointer)
您可以使用如下函数计算差异

difference(struct date_time *T1, struct date_time *T2) {  //T2 is recent time
  //process...
  std::cout<<"differ: "<<T2->hour-T1->hour<<"h "<<T2->minute-T1->minute<<"m "<<T2->seconds-T1->seconds<<"s "<<endl;
}
差异(结构日期时间*T1,结构日期时间*T2){//T2是最近的时间
//过程。。。

std::cout坚持您的数据结构

// Passing your structures by reference (&)
double MA_TimeDiffMinutes(const struct date_time& t1, const struct date_time& t2) {
  // As per your instruction, ignore year, month, day
  int diff = ((t1.hour - t2.hour)*60 + t1.minute - t2.minute)*60 + t1.second - t2.second;
  return diff/60.0;
}

int main() {
  struct date_time t_first;
  struct date_time t_next;
  // TBD fill the fields of t_first and t_next.
  cout << MA_TimeDiffMinutes(t_next, t_first) << endl;
}
//通过引用传递结构(&)
双MA_TimeDiffMinutes(常数结构日期时间和t1,常数结构日期时间和t2){
//按照您的指示,忽略年、月、日
积分差=((t1.hour-t2.hour)*60+t1.minute-t2.minute)*60+t1.second-t2.second;
返回差/60.0;
}
int main(){
首先是结构日期时间;
结构日期时间t\u下一步;
//TBD首先填写t_字段,然后填写t_字段。

“我可以在函数的参数中调用结构吗?”是的,你可以。另一个问题是什么?如果问题是如何将结构传递给函数,答案如下:1)2)我不同意你对
struct date\u time
的满意。我知道严格使用访问器意味着客户端代码可以访问对于结构,不考虑其中元素的顺序,请为可怜的sap考虑一下,他们有朝一日必须修改代码,并且必须时刻记住,
29之类的表达式“可能”,2013,30,30,23
必须解释为
ddmmmyyyysmmhh
。这只是让人困惑。除此之外,使用字符串表示月份而不是整数是一个小问题。别忘了,做维护的可怜的sap就是你。@HighPerformanceMark我知道这不是世界上最好的代码。我现在是他了你在编码方面几乎还不错。我只是“真的”两天前进入编程领域。我正在做这些编程练习来体验事情是如何运作的。不过我会每天坚持下去。我和其他人一样喜欢正面的批评,但是你会批评一个5岁的孩子学习如何骑自行车吗?我真的不懂这些东西。谢谢你的帮助。你能解释一下t1和t1是什么吗t2是?它们只是结构日期时间的通用变量吗?
t1
t2
MA\u TimeDiffMinutes()
的第一个和第二个参数的本地名称。这里是简单的通用变量名称。除了
//MA\u TimeDiffMinutes(t1,t2)之外,没有其他特殊含义以分钟为单位计算t1-t2差值
// Passing your structures by reference (&)
double MA_TimeDiffMinutes(const struct date_time& t1, const struct date_time& t2) {
  // As per your instruction, ignore year, month, day
  int diff = ((t1.hour - t2.hour)*60 + t1.minute - t2.minute)*60 + t1.second - t2.second;
  return diff/60.0;
}

int main() {
  struct date_time t_first;
  struct date_time t_next;
  // TBD fill the fields of t_first and t_next.
  cout << MA_TimeDiffMinutes(t_next, t_first) << endl;
}