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. Quartz源码——Quartz调度器的Misfire处理规则(四)

    Quartz调度器的Misfire处理规则 调度器的启动和恢复中使用的misfire机制,还需细化! SimpleTrigger的misfire机制 默认的 Trigger.MISFIRE_INSTR ...

  2. Intellij idea史上最简单的教程之Linux下安装与破解Intellij idea2017

    一.前言 这一节我们介绍在Linux下如何安装与破解Intellij idea2017.现在有很多公司开发环境都是Linux,所以掌握在Linux环境下使用Idea办公也是咱们必须得掌握的技能. 记住 ...

  3. Java公开课-01.类和对象

    一,类和对象的含义 1.类:类是具有相同属性(静态特征)和行为(功能 )的一系列事物的集合. eg:以下俩者是不是类 1)汽车  √ 2)小胖桌子上那个红色的杯子  × 2.对象:被精确限定到一个特殊 ...

  4. 【转】Python中实现远程调用(RPC、RMI)简单例子

    远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这些都隐藏起来了.远程调用是分布式系统的基础. 远程调用一般分为两种,远程过程调用(RPC)和远程 ...

  5. centos 7.1系统更改Mariadb数据存储位置步骤分享

    一.首先确保你要更改Mariadb数据存储的位置的空间够大 现在已将Mariadb存储位置更改到/opt/目录下 1.然后将Mariadb服务stop:systemctl stop mariadb 2 ...

  6. mysql explain 分析sql语句

    鉴于最近做的事情,需要解决慢sql的问题,现补充一点sql语句性能分析之explain的使用方式! 综合返回数据情况,分析各个参数,可以了解sql 使用方法:explain  + sql语句 如 :e ...

  7. Hadoop通过HCatalog编写Mapreduce任务访问hive库中schema数据

    1.dirver package com.kangaroo.hadoop.drive; import java.util.Map; import java.util.Properties; impor ...

  8. Mysql的二进制安装和基础入门操作

    前言:Mysql数据库,知识非常的多,要想学精学通这块知识,估计也要花费和学linux一样的精力和时间.小编也是只会些毛皮,给大家分享一下~ 一.MySQL安装 (1)安装方式: 1 .程序包yum安 ...

  9. SAP的 消息 弹出窗口(备忘)

    DATA: i_smesg TYPE tsmesg WITH HEADER LINE. i_smesg-msgty = 'E'. i_smesg-arbgb = '. i_smesg-txtnr = ...

  10. visual Studio 无法调试,提示程序跟踪已退出

    今天在打码出现了vs无法调试,我在网上查了很久没有发现一个方法. vs点击启动时,出现了一下提示 程序"[12648] *.vshost.exe: 程序跟踪"已退出,返回值为 0 ...