struct Dates
{
int day;
int month;
int year;
}accountinfo[3];
struct Accounts
{
string name,lastname;
int number;
float balance;
}account[3];
void sortduetoaccnumbers()
{
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
if (account[j].number>account[j+1].number)
{
//swap
}
}
}
}
void sortduetodates()
{
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
if (accountinfo[j].year>accountinfo[j+1].year)
{
//swap
}
else if (accountinfo[j].year==accountinfo[j+1].year)
{
if (accountinfo[j].month>accountinfo[j+1].month)
{
//swap
}
else if (accountinfo[j].month==accountinfo[j+1].month)
{
if (accountinfo[j].day>accountinfo[j+1].day)
{
//swap
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我无法使用排序算法对这些帐户进行排序.如果我输入它会崩溃.cmd突然停止并完成程序.
我进入了一个评论行,交换函数必须去.所以你可以分析代码.
除此之外,其他所有功能都在工作.我陷入了困境.
这段代码是错误的:
if (accountinfo[j].year>accountinfo[j+1].year)
因为如果j == 2,那么j + 1 = 3 - 索引数组大小=>未定义的行为(在你的情况下崩溃)
你需要改变循环条件j<2或重写你的支票