当我尝试在Visual Studio中运行此代码时,我一直得到未解析的外部。
大学的结构时间分配
创建一个名为Time的结构,其中包含成员天,小时,分钟, 和秒作为整数。 创建Time实例并初始化成员。 创建一个函数来规范化添加值的时间。
例如,在为小时添加值后,请调用normalize 应该看小时的功能> 24。 如果是这样,请在天数成员中添加1,并通过减去24来重置小时数 从当前的价值。 做同样的分钟和秒数超过59。
您的主程序应该将值添加到小时,分钟和秒以及 在每个之后,调用normalize函数来正确设置值。
每次更新后输出成员。假设小时使用24小时 时钟。
#include <iostream>
using namespace std;
Struct time
{
int days = 0;
int hours = 0;
int minutes = 0;
int seconds = 0;
};
void normalize();
int main()
{
int clockRepeating;
for (clockRepeating = 0; clockRepeating < 150; clockRepeating++)
{
normalize();
}
return 0;
}
void normalize(Time &timenormalize)
{
if (timenormalize.days > 31)
timenormalize.days = 1;
if (timenormalizehours > 24)
{
timenormalize.hours = 0;
timenormalize.days++;
}
if (timenormalize.minutes > 59)
{
timenormalize.minutes = 0;
timenormalize.hours++;
}
if (time normalize.seconds > 59)
{
timenormalize.seconds = 0;
timenormalize.minutes++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes, timenormalize.seconds;
}
else
timenormalize.seconds++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes,timenormalize.seconds;
答案 0 :(得分:1)
您为void normalize();
声明的签名与此文件(void normalize(Time &timenormalize)
)中定义的签名不符。
答案 1 :(得分:1)
这是您的代码的固定版本。首先是编译错误:
Struct
更改为struct
:struct
是关键字,必须为小写; Time
中将struct time
更改为void normalize(..)
:符号区分大小写:Time
未声明,但struct time
是; .
添加到if (timenormalizehours)
:if (timenormalize.hours)
; }
添加到文件末尾(可能是复制/粘贴错误)。然后是链接器错误undefined reference to 'normalize'
:
void normalize()
更改为void normalize(struct time &)
:您声明没有参数的normalize
函数,但使用一个参数定义 然后最后介绍了编译错误:
normalize();
调用更改为normalize( mytime );
,因为它需要一个参数struct mytime
作为参数传递。#include <iostream>
using namespace std;
struct time
{
int days = 0;
int hours = 0;
int minutes = 0;
int seconds = 0;
};
void normalize(struct time &);
int main()
{
int clockRepeating;
struct time mytime;
for (clockRepeating = 0; clockRepeating < 150; clockRepeating++)
{
normalize( mytime );
}
return 0;
}
void normalize(struct time &timenormalize)
{
if (timenormalize.days > 31)
timenormalize.days = 1;
if (timenormalize.hours > 24)
{
timenormalize.hours = 0;
timenormalize.days++;
}
if (timenormalize.minutes > 59)
{
timenormalize.minutes = 0;
timenormalize.hours++;
}
if (timenormalize.seconds > 59)
{
timenormalize.seconds = 0;
timenormalize.minutes++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes, timenormalize.seconds;
}
else
timenormalize.seconds++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes,timenormalize.seconds;
}
它会打印一系列0
。现在,您可以在struct time mytime
中添加一些值。我希望这有帮助!