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. AES加解密算法Qt实现

    [声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...

  2. HTML 简述

    1.本页超链接 <a href="#t">查看 Chapter 4.</a> <a name="t">Test</a& ...

  3. 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题

    题目: 题目已经说了是最大二分匹配题, 查了一下最大二分匹配题有两种解法, 匈牙利算法和网络流. 看了一下觉得匈牙利算法更好理解, 然后我照着小红书模板打了一遍就过了. 匈牙利算法:先试着把没用过的左 ...

  4. bzoj1036 [ZJOI2008]树的统计

    一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从 ...

  5. TargetType Mismatch

    TargetType Mismatch 环境:windowsphone 8,silerlight toolkit, 页面报TargeType Mismatch错误或者 length 0,是因为Syst ...

  6. 【DDD】领域驱动设计实践 —— Domain层实现

    本文是DDD框架实现讲解的第三篇,主要介绍了DDD的Domain层的实现,详细讲解了entity.value object.domain event.domain service的职责,以及如何识别出 ...

  7. vs 或 Sql server2012连接Sql server时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误

    以前连接是正常的,就这两天连不上了.(没有耐心的直接看末尾解决办法) 错误消息如下: 1.尝试读取或写入受保护的内存.这通常指示其他内存已损坏.(System.Data) 2.已成功与服务器建立连接, ...

  8. Java高新技术 反射机制

     Java高新技术 反射机制 知识概要:                   (1)反射的基石 (2)反射 (3)Constructor类 (4)Field类 (5)Method类 (6)用反射方 ...

  9. 使用Travis CI自动部署Hexo到GitHub

    原文链接(转载请注明出处):使用Travis CI自动部署Hexo到GitHub 前言 使用 hexo + gitPages 搭建个人博客的人都知道,每当要发表一篇博文,第一步得手动使用 hexo g ...

  10. JavaScript设计模式--门面模式

    外部与一个子系统的通信必须通过一个系统的一个门面对象进行,这就是门面模式. 门面模式具备如下两个角色: 1. 门面角色 客户端可以调用这个角色方法,此角色中有子系统的应用(知晓相关的(一个或多个)子系 ...