gpt4 book ai didi

c++ - 对输入的名称 'age' 进行排序,然后显示结果

转载 作者:行者123 更新时间:2023-11-27 23:10:52 24 4
gpt4 key购买 nike

我想按各个输入名称的升序对年龄进行排序,然后根据该列表显示列表。我设法对它们进行了排序,但我似乎无法根据年龄正确显示名称。

这是我的代码:-

#include <iostream>
using namespace std;

int main()
{
char name [5][25];
int age [5];
int i;

for (i=0 ; i<5 ; i++)
{
cout << "Enter name " << i+1 << " : ";
cin >> name [i];
cout << "Enter age : ";
cin >> age [i];
cout << endl;
}

cout << "\n********** Your entered data **********\n\n";

cout << "\tName" << "\t\t" << "Age\n\n";

for (i=0 ; i<5 ; i++)
{
cout << "\t" << name [i] << "\t\t" << age [i];
cout << endl;
}

int hold;

for (i=0 ; i<5 ; i++)
{
for (int j=0 ; j<5 ; j++)
{
if (age [j] > age [j+1])
{
hold = age [j];
age [j] = age [j+1];
age [j+1] = hold;
}
}
}

cout << "\n\n******* Sorted data (w.r.t age) *******\n\n";

cout << "\tName" << "\t\t" << "Age\n\n";

for (i=0 ; i<5 ; i++)
{
cout << "\t" << name [i] << "\t\t" << age [i];
cout << endl;
}

return 0;
}

问题出在最后一个 for 循环上。你们谁能帮我实现这个逻辑?

最佳答案

改变你的交换逻辑。交换姓名和年龄。

    char holdstr[25]; ///Temporary string to swap.

if (age [j] > age [j+1] || (age[j] == age[j+1])
{
//Swap the age and name both.
hold = age [j];
strcpy(holdstr, name[j]);

age [j] = age [j+1];
strcpy(name[j], name[j+1]);

age [j+1] = hold;
strcpy(name[j+1], holdstr);
}

您应该将 condition 包装在 if 中的函数中,以便您可以轻松更改逻辑。

关于c++ - 对输入的名称 'age' 进行排序,然后显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20454905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com