gpt4 book ai didi

c++ - 根据他们的年龄按升序显示他们的名字?

转载 作者:行者123 更新时间:2023-11-28 08:13:03 25 4
gpt4 key购买 nike

规定的问题是“编写一个程序,将 10 名员工的姓名和年龄作为二维 char 数组的输入,并根据他们的年龄按升序显示他们的姓名”。

我已将目前为止粘贴的内容粘贴在下方,但我不知道如何根据年龄按升序显示姓名。我错过了什么?

#include<iostream.h>
#include<string.h>
void sort(int[],int);
void main(void)
{
char a[10][5],x;
int b[5],i,j;
for(j=0;j<=5;j++)
{
cout<<"Enter name of Employee:";
for(i=0;i<10;i++)
{

cin>>x;
x=a[j][i];
}
cout<<"Enter Employee's age:";
cin>>b[j];
cout<<endl;
}
sort(b,j);
cout<<"Name of Employee \t\t Age \n";
for(j=0;j<5;j++)
{
for(i=0;i<10;i++)
{
x=a[j][i];
cout<<"\t"<<x;
}
cout<<"\t\t"<<b[j]<<"\n";
}
}
void sort(int x[],int size)
{
int temp,i,j;
for(j=0;j<size;j++)
{
for(i=0;i<size;i++)
{
if(x[i]>x[i+1])
{
temp=x[i+1];
x[i+1]=x[i];
x[i]=temp;
}
}
}
}

最佳答案

我会为您指明正确的方向。

你应该定义结构来保存姓名和年龄对,然后做一个比较函数。

然后您只需填充结构的 vector ,然后使用标准库提供的排序函数对它们进行排序,遍历 vector 打印出内容,您可以定义结构的流运算符来简化它们。

http://www.cplusplus.com/doc/tutorial/structures/

http://en.cppreference.com/w/cpp/algorithm/sort

http://en.cppreference.com/w/cpp/container/vector

http://www.java2s.com/Code/Cpp/Overload/Overloadstreamoperator.htm

编辑:为了一切都好,请使用 std::string 来保存名称。

http://www.cplusplus.com/reference/string/string/

像您这样使用 char 数组已被弃用。

我在其他解决方案之前开始写这个,因为我宁愿看看 C++ 有什么能力,而不是你的讲座给你提供了什么。

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

struct employee
{
employee(const std::string& name_, unsigned age_)
: name(name_), age(age_) {}

std::string name;
unsigned age;
};

std::ostream& operator<<(std::ostream& os, const employee& e)
{
os << e.name << " " << e.age;
return os;
}

bool comp_age(const employee& e1, const employee& e2)
{
return e1.age<e2.age;
}


int main()
{
std::vector<employee> employees;
employees.reserve(5);

for(unsigned i=0; i!=5; ++i)
{
std::string name;
unsigned age;

std::cout << "Name:" << std::flush;
std::cin >> name;
std::cout << "Age:" << std::flush;
if(!std::cin >> age)
{
std::cerr << "not an number" << std::endl;
--i;
continue;
}
//note you should catch any failure to parse to int here

employees.push_back(employee(name, age));
}

std::sort(employees.begin(), employees.end(), comp_age);

std::copy( employees.begin(), employees.end(),
std::ostream_iterator<employee>(std::cout, "\n"));

return 0;
}

所以这是一个替代方案,但请了解我上面列出的构成此示例的概念。

关于c++ - 根据他们的年龄按升序显示他们的名字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8493019/

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