1

我正在自己完成一本 O'Reilly 教科书,现在我正在学习结构。编程练习之一是:

设计一个结构来存储时间和日期。编写一个函数,以分钟为单位计算两次之间的差异。

我相信我的结构部分已经关闭,但我对差异功能感到困惑。我很懒惰,没有考虑相隔的天数,但这个问题要求相隔时间,所以我要假装他们在谈论的只是一天 24 小时。我可以在函数的参数中调用结构吗?我当然试过。任何建议都会有所帮助。谢谢

到目前为止我的代码(还没有完成):

#include <iostream>


int difference(struct date_time);


int main()
{
    return 0;
}


struct date_time{
    int day;
    char month[20];
    int year;
    int second;
    int minute;
    int hour;
} super_date_time = {
    29,
    "may",
    2013,
    30,
    30,
    23
    };
int difference(date_time)
{
    int second1 = 45;
    int minute1 = 50;
    int hour1 = 24;

    std::cout << "Time difference is " << hour1 - int hour
    return 0;
}
4

2 回答 2

2

坚持你的数据结构......

// 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;
}

考虑使用月份的整数表示而不是字符串。

于 2013-05-30T05:56:48.687 回答
0

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

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;
}

[减去:最近时间 - 旧时间]

于 2013-05-30T04:16:39.563 回答