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
}
}
}
}
}
}
我无法使用排序算法对这些帐户进行排序。如果我输入它们,它会崩溃。 cmd突然停止并完成程序。
我在注释行输入了交换功能。这样您就可以分析代码了。
除此功能外,其他所有功能均在工作。我被困在这一点上。
答案 0 :(得分:7)
此代码是错误的:
if (accountinfo[j].year>accountinfo[j+1].year)
因为如果j == 2,则j + 1 = 3-超过数组大小的索引=>未定义的行为(在您的情况下崩溃)
您需要将循环条件更改为j<2
或重写支票