不确定如何按字母顺序对名称进行排序

时间:2019-01-16 07:14:19

标签: c++

编写一个程序,要求用户输入三个名称,然后显示名称

按字母顺序排序。假设所有名称都不相同。例如,

如果用户输入了Charlie,Leslie和Andy,程序将显示:

安迪

查理

莱斯利

//System Libraries
#include <iostream>
#include <string>//Input/Output Library
using namespace std;

//User Libraries

//Global Constants, no Global Variables are allowed
//Math/Physics/Conversions/Higher Dimensions - i.e. PI, e, etc...

//Function Prototypes

//Execution Begins Here!
int main(int argc, char** argv) {

    string name1,
           name2,
           name3;

    cout<<"Sorting Names\n";
    cout<<"Input 3 names\n";
    cin>>name1;
    cin>>name2;
    cin>>name3;

    cout<<name1<<endl;
    cout<<name2<<endl;
    cout<<name3;


    return 0;
}

预期:

排序·名称↵ 输入·3·名称↵ 安迪↵ 查理↵ 莱斯利

实际:

排序·名称↵ 输入·3·名称↵ 查理↵ 莱斯利↵ 安迪

2 个答案:

答案 0 :(得分:0)

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

int main()
{
    std::vector<std::string> sortedItems;



    {
        std::string name1, name2, name3;
        std::cout <<"Sorting Names\n";
        std::cout <<"Input 3 names\n";
        std::cin >> name1;
        std::cin >> name2;
        std::cin >> name3;

        sortedItems.insert(name1);
        sortedItems.insert(name2);
        sortedItems.insert(name3);
    }

    std::sort(sortedItems.begin(), sortedItems.end());

    for(unsigned i=0; i<sortedItems.size();i++) 
    {
        std::cout << sortedItems[i];
        if(i < sortedItems.size() - 1) std::cout << std::endl;
    return 0;
}

答案 1 :(得分:0)

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;
}

我发现您可以尝试使用for循环对名称进行排序和吐出。 归功于AngelCastillo,他将其发布到了{@ {3}}