Problem C: 学生的排序

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 274  Solved: 136
[Submit][Status][Web Board]

Description

输入若干个学生的姓名和年龄,将他们排序后输出,并求输入的若干个学生的最大者。

定义一个类Student,拥有属性age(int类型)和name(字符串),重载其大于、输出和输入运算符。大于运算符比较的规则是先比较年龄,年龄大的对象为大;如果年龄相同,则比较姓名,姓名大的对象为大。

基于Student类定义类StudentGroup,该类有若干个学生组成,定义其add方法、srt方法和show方法,用于增加1个学生、对所有的学生排序和显示所有的学生信息。

Input

输入有若干行,每行包括一个字符串(无空白符)、一个整数,分别学生的姓名name和年龄age。

Output

先按照学生比较规则按照递增序输出所有学生信息,每个学生信息占一行。最后一行输出最大学生的信息,格式见样例。

Sample Input

Tom 19
Jack 21
Mary 20
Tom 22
Jack 13

Sample Output

Jack 13
Tom 19
Mary 20
Jack 21
Tom 22
The max is Tom 22

HINT

Append Code

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
class Student
{
public:
    int age;
    string name;
    Student(string s="",int a=0):age(a),name(s){}
    friend istream & operator>>(istream &in, Student &A){
        in >> A.name >> A.age;
        return in;
    }
    friend  ostream & operator<<(ostream &os, Student &p)
    {
        os<<p.name<<" "<<p.age<<endl;
        return os;
    }
    bool operator <(const Student &p)
    {
        if(age==p.age)
            return name<p.name;
        else
            return age<p.age;
    }
};
class StudentGroup:public Student
{
public:
    vector<Student> s;
    void add(Student &p)
    {
        s.push_back(p);
    }
    bool cmp(Student a,Student b)
    {
        return a<b;
    }
    void srt()
    {
        int l=s.size();
        for(int i=0;i<l;i++)
        for(int j=i;j<l;j++)
        {
            if(!(s[i]<s[j]))
               {
                   int t;
                   string r;
                   t=s[i].age;
                   s[i].age=s[j].age;
                   s[j].age=t;
                   r=s[i].name;
                   s[i].name=s[j].name;
                   s[j].name=r;
               }
        }

    }
    Student operator =(const Student &p)
    {
        return Student(p.name,p.age);
    }
    void show()
    {
        for(int i=0;i<s.size();i++)
            cout<<s[i].name<<" "<<s[i].age<<endl;
    }
};
int main()
{
    Student stu, max;
    StudentGroup stuG;
    while(cin>>stu)
    {
        if (!(stu < max))
            max = stu;
        stuG.add(stu);
    }
    stuG.srt();
    stuG.show();
    cout<<"The max is "<<max<<endl;

    return 0;
}

Problem C: 学生的排序的更多相关文章

  1. Problem T: 结构体--学生信息排序

    Problem T: 结构体--学生信息排序 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 2219  Solved: 1305[Submit][Sta ...

  2. YTU 2878: 结构体--学生信息排序

    2878: 结构体--学生信息排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 297  解决: 148 题目描述 定义存放一个学生信息的结构体类型,学生信息包括:姓名,学号,性别,院 ...

  3. (C语言)学生成绩排序-期末考倒数第二题结构体数组排序

    假设学生的基本信息包括学号.姓名.三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型.输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息.如果平均分相同 ...

  4. hdu 5427 A problem of sorting(字符排序)

    Problem Description There are many people's name and birth in a list.Your task is to print the name ...

  5. 题目1005:Graduate Admission(结构体排序)

    问题来源 http://ac.jobdu.com/problem.php?pid=1005 问题描述 这道题理解题意有些麻烦,多看几遍先理解题意再说.每个学生有自己的三个成绩,一个编号,以及一个志愿列 ...

  6. 排序算法----调用库函数qsort进行快速排序

    功 能: 快速排序 头文件:stdlib.h 用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const ...

  7. 数据结构(c语言)之学生信息管理系统

    程序思维导图 代码表示(代码参考:长春大学-牛言涛老师) 如有错误请指出欢迎交流 #include<stdio.h> #include<malloc.h>//动态存储分配函数头 ...

  8. 用 Python 排序数据的多种方法

    用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭 ...

  9. 还是把一个课程设计作为第一篇文章吧——学生学籍管理系统(C语言)

    #include <stdio.h> #include<stdlib.h> #include<string.h> typedef struct student { ...

随机推荐

  1. java基础——java.util.ConcurrentModificationException

    在编写代码的时候,有时候会遇到List里有符合条件的的对象,就移除改对象! 但是这种操作如:使用了 List 的remove,会导致一些很严重的问题! 如下这段代码使用ArrayList: @Test ...

  2. 原创:TSP问题解决方案-----禁忌搜索算法C实现

    本文着重于算法的实现,对于理论部分可自行查看有关资料可以简略参考该博文:http://blog.csdn.net/u013007900/article/details/50379135 本文代码部分基 ...

  3. Linux系统centOS7在虚拟机下的安装及XShell软件的配置

    前面的话 本文将详细介绍Linux系统centOS7在虚拟机下的安装 准备工作 [系统下载] 在安装centOS7之前,首先在官网下载合适的版本 然后,选择一个链接下载即可 [虚拟机配置] 接下来,需 ...

  4. Dubbo服务集群、服务启动依赖检查

    一.什么叫Dubbo服务集群 指把同一个服务部署到多台机器,然后通过Dubbo服务集群的容错配置实现一台机器的服务挂掉之后自动切换到另外的一台机器 二.Dubbo服务集群容错配置--集群容错模式 标签 ...

  5. h5 meta学习

    定义针对搜索引擎的关键词:<meta name="keywords" content="meta,red" /> 定义对页面的描述:<meta ...

  6. JAVA提高二:枚举

    JDK5.0中有一个非常有用的特性:枚举,这个特性以前在C语言中出现过,后来JDK出现后,开始觉得没有必要,但随着使用JAVA语言的人数增多,发现大家对枚举的需求非常大,于是又加入了此特性,下面我们来 ...

  7. HDU1142 A Walk Through the Forest(最短路+DAG)

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...

  8. 【MVC】MvcPager分页及边界传递数据示例

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. Kvm虚拟化的一种打包及部署方案(采用tar包,lvm方式)

    Kvm虚拟化的一种打包部署方案(采用tar包,lvm方式) –-–-–-2016年终总结 一 毕业之后跟师兄学到的第一块主要内容,理解花了不少时间.期间经历了shell的入门.linux基础知识入门. ...

  10. Re-Order Buffer

    Re-order Buffer(ROB)是处理器中非常重要的一个模块,它位于renamer与scheduler(RS)之间,并且也是execution unit(EU)的出口.ROB作为指令处理的后端 ...