Problem C: 学生的排序
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
Jack 21
Mary 20
Tom 22
Jack 13
Sample Output
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: 学生的排序的更多相关文章
- Problem T: 结构体--学生信息排序
Problem T: 结构体--学生信息排序 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2219 Solved: 1305[Submit][Sta ...
- YTU 2878: 结构体--学生信息排序
2878: 结构体--学生信息排序 时间限制: 1 Sec 内存限制: 128 MB 提交: 297 解决: 148 题目描述 定义存放一个学生信息的结构体类型,学生信息包括:姓名,学号,性别,院 ...
- (C语言)学生成绩排序-期末考倒数第二题结构体数组排序
假设学生的基本信息包括学号.姓名.三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型.输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息.如果平均分相同 ...
- 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 ...
- 题目1005:Graduate Admission(结构体排序)
问题来源 http://ac.jobdu.com/problem.php?pid=1005 问题描述 这道题理解题意有些麻烦,多看几遍先理解题意再说.每个学生有自己的三个成绩,一个编号,以及一个志愿列 ...
- 排序算法----调用库函数qsort进行快速排序
功 能: 快速排序 头文件:stdlib.h 用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const ...
- 数据结构(c语言)之学生信息管理系统
程序思维导图 代码表示(代码参考:长春大学-牛言涛老师) 如有错误请指出欢迎交流 #include<stdio.h> #include<malloc.h>//动态存储分配函数头 ...
- 用 Python 排序数据的多种方法
用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭 ...
- 还是把一个课程设计作为第一篇文章吧——学生学籍管理系统(C语言)
#include <stdio.h> #include<stdlib.h> #include<string.h> typedef struct student { ...
随机推荐
- win7旗舰版最新激活密钥
Win7旗舰.企业.专业版的激活密钥(32位.64位均可用).FJGCP-4DFJD-GJY49-VJBQ7-HYRR2 AcerVQ3PY-VRX6D-CBG4J-8C6R2-TCVBD Alien ...
- GCD SUM 强大的数论,容斥定理
GCD SUM Time Limit: 8000/4000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatu ...
- 概率图模型PGM——D map, I map, perfect map
若F分布的每个条件独立性质都反映在A图中,则A图被称为F分布的D map. 若A图表现出的所有条件独立性质都在F分布中满足(与F分布不矛盾),则A图被称为F分布的I map. 弱A图既是F分布的D m ...
- vue学习之父组件与子组件之间的交互
1.父组件数据传给子组件 父组件中的msgfather定义数据 在之组件中通过设置props来取得希望从父组件中获得的值 通过设置这两个属性就可以从父组件传数据到子组件 2.子组件传数据给父组件(这里 ...
- selenium webdriver 启动三大浏览器Firefox,Chrome,IE
selenium webdriver 启动三大浏览器Firefox,Chrome,IE 1.安装selenium 在联网的情况下,在Windows命令行(cmd)输入pip install selen ...
- jS判断浏览器终端
在做移动端项目的时候,常常会遇到需要判断页面浏览终端的需求.要想判断是什么浏览器终端,先打印 navigator.userAgent 出来.所以收集了几种比较常用的方法: if(/(iPhone|iP ...
- 使用jquery.form.js文件进行文件上传
本想着文件上传是一件挺简单的事,不过是获取文件地址保存到服务器而已,然而事实并非如此. 我信心满满的写下input type="file",alert input 的value,打 ...
- BitmapImage 读取内存流和显示图片
FileStream filestream = File.OpenRead(@"C:\Users\Administrator\Desktop\queryHeaderImg.png" ...
- Python格式化字符串--format
format格式化字符串方法相较于老版%格式方法的优点: 1.不需要理会数据类型的问题,在%方法中'%s'只能替代字符串类型. 2.单个参数可以多次输出,参数顺序可以不相同. 3.填充方式十分灵活,对 ...
- Linux入门(4)——Ubuntu16.04安装MATLAB2016b
通常有三个安装文件: Matlab 2016b Linux64 Crack.rar R2016b_glnxa64_dvd1.iso R2016b_glnxa64_dvd2.iso sudo apt i ...