我一直在尝试使用此C ++程序按字母顺序对5个名称进行排序:
#include <iostream>
#include <cstring>
#include <conio.h>
using namespace std;
int main()
{
char names[5][100];
int x,y,z;
char exchange[100];
cout << "Enter five names...\n";
for(x=1;x<=5;x++)
{
cout << x << ". ";
cin >> names[x-1];
}
getch();
for(x=0;x<=5-2;x++)
{
for(y=0;y<=5-2;y++)
{
for(z=0;z<=99;z++)
{
if(int(names[y][z])>int(names[y+1][z]))
{
strcpy(exchange,names[y]);
strcpy(names[y],names[y+1]);
strcpy(names[y+1],exchange);
break;
}
}
}
}
for(x=0;x<=5-1;x++)
cout << names[x];
return 0;
}
如果分别输入Earl,Don,Chris,Bill和Andy,我会得到以下信息:
AndyEarlDonChrisBill
有人可以告诉我我的程序有什么问题吗?
您可以使用字符串的std :: set或std :: multiset(如果允许重复的项目),它将保持项目的自动排序(如果需要,您甚至可以更改排序标准)。
#include <iostream>
#include <set>
#include <algorithm>
void print(const std::string& item)
{
std::cout << item << std::endl;
}
int main()
{
std::set<std::string> sortedItems;
for(int i = 1; i <= 5; ++i)
{
std::string name;
std::cout << i << ". ";
std::cin >> name;
sortedItems.insert(name);
}
std::for_each(sortedItems.begin(), sortedItems.end(), &print);
return 0;
}
输入:
- 杰拉多
- 卡洛斯
- 卡米尔
- 天使
- 博斯科
输出:
Angel
Bosco
Carlos
Gerardo
Kamilo
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句