如何从一个临时结构变量为多个结构变量传递变量(永久存储)
how to pass variables from a temp struct variable for multiple struct variables (permanent storage)
我在C++中得到了这段代码,它的主要任务是计算两次之间的差。首先,它应该为两个结构变量赋值。之后,它应该找出其中哪一个时间先开始。它将要做的最后一件事是计算时间之间的差异。
我对这段代码的问题不是不能将变量从一个临时结构变量传递到另一个变量,问题是当我第二次将变量从临时结构变量传给第二个结构变量时,第一个结构变量中的变量会被程序遗忘。有没有办法让传递的变量永久地存在于结构变量中?
这是我的代码:
#include <iostream>
using namespace std;
const int maxAddTime = 141; // 23 hours + 59 min. + 59 sec.
const int minAddTime = 0;
int addTime;
char choice;
bool done = false;
struct timeset {
int hour;
int minute;
int second;
};
int main(){
timeset time1, time2, temp;
do {
int times = 1;
while (times <=2) {
do {
cout << "Write your " << times << " time (hh mm ss)" << endl;
temp = (times == 1) ? time1 : time2;
cin >> temp.hour >> temp.minute >> temp.second;
int addTime = temp.hour + temp.minute + temp.second;
if ( addTime < minAddTime || addTime > maxAddTime) {
cout << "Invalid time!" << endl;
cout << "Do you want to change the time? (Y)es or (N)o?" << endl;
cin >> choice;
}
else {
choice = 'n';
times++;
}
if (times == 1){
time1 = temp;
cout << time1.minute ;
}
else {
time2 = temp;
cout << time2.minute << endl;
}
break;
}
while ( choice != 'n' || choice != 'N');
}
if (time1.hour > time2.hour || time1.minute > time2.minute ||
time1.second > time2.second) {
cout << "The first time comes first!n";
}
else if ( time1.hour < time2.hour || time1.minute < time2.minute ||
time1.second < time2.second) {
cout << "The second time comes first!n";
}
else {
cout << "The times are equal!n";
}
int addTime = time1.hour + time1.minute + time1.second;
cout << addTime << endl;
addTime = addTime - (time2.hour + time2.minute + time2.second);
cout << addTime << endl << endl;
}
while (!done);
return 0;
}
在检查其值之前,您正在递增"次":
else {
choice = 'n';
times++;
}
所以,当你在第一次输入后到达这里时,时间已经设置为2,第一个条件永远不会满足。将时间++移动到循环的末尾;
if (times == 1){
time1 = temp;
cout << time1.minute ;
}
else {
time2 = temp;
cout << time2.minute << endl;
}
/// other code
times++;
此外,你不能简单地将不同的时间单位(小时+分钟+秒)相加,得到任何有意义的结果。您需要将每个时间分量标准化为一个通用的单位——最有可能的是秒。因此,计算为:
int addTime = time1.hour*60*60 + time1.minute*60 + time1.second;
相关文章:
- 从结构寻址时,MMAP变量的行为很奇怪
- 访问在 C++ 结构中声明的枚举变量
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- 在类构造函数中使用结构变量
- 在 c++ 中将变量作为结构构造函数中的引用传递
- 在类构造函数中定义结构变量的参数
- 为什么我们再次从结构对象创建结构变量?
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 模板化结构中的零大小成员变量
- C++ 结构中的可选变量(变量结构)
- 对其中一个变量的多变量结构进行排序
- 指向非指针变量结构的指针。这些变量在哪里,堆还是堆栈?
- 是好是坏:为了避免使用全局变量/结构体的属性/大量参数而使用巨型结构体
- Cpp变量/结构用于存储128位数据
- 第一私有变量结构中允许的OpenMP调用和指令
- VS2008传递变量-结构与结构组件-优点/缺点
- 在c++类成员函数中使用c库变量/结构成员
- 如何不迷失在执行'<'对于多变量结构