首页 > 编程语言 > 详细

成绩排序

时间:2020-02-22 16:57:35      阅读:66      评论:0      收藏:0      [点我收藏+]

题目描述

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。

示例:
jack      70
peter     96
Tom       70
smith     67

从高到低  成绩 
peter     96 
jack      70 
Tom       70 
smith     67

从低到高

smith     67

jack      70 
Tom      70 
peter     96

输入描述:

输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开

输出描述:

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1

输入

3
0
fang 90
yang 50
ning 70

输出

fang 90
ning 70
yang 50

解答思路:首先要建立一个结构体存储姓名和分数。由于要动态输入学生的个数,所以要建立一个动态数组(vector <Node> v(n)),
然后就可以编写比较算法进行比较了。代码如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Node{
    string name;
    int score;
};
int main()
{
    int count;
    int flag;
    int i;
    
    while(cin>>count)
    {
        cin>>flag;
        vector<Node> v(count);
     for ( i = 0; i<count; i++)
    {
        cin >> v[i].name >> v[i].score;
    }
    
    if (flag == 0)
    {
        for ( i = 0; i<count - 1; i++)
        {
            for (int j = 1; j<count - i; j++)
            {
                if (v[j - 1].score<v[j].score)
                {
                    Node temp;
                    temp = v[j - 1];
                    v[j - 1] = v[j];
                    v[j] = temp;
                }
            }
        }
    }
    else
    {
        for ( i = 0; i<count - 1; i++)
        {
            for (int j = 1; j<count - i; j++)
            {
                if (v[j - 1].score>v[j].score)
                {
                    Node temp;
                    temp = v[j - 1];
                    v[j - 1] = v[j];
                    v[j] = temp;
                }
            }
        }
    }
    for ( i = 0; i<v.size(); i++)
    {
        cout << v[i].name << " " << v[i].score << endl;
    }
   
    }
    return 0;
}

第一次在牛客网上写代码,没有什么经验。通过摸索,最后终于编译通过。以下是我编程过程中遇到问题的一些总结:

1、编译结果是“空,有没有循环的多个case”

  解决方案:因为要能验证多组数据,所以要在最外层写个while无限循环。

2、vector(动态数组)的使用方法

vector <数据类型> 变量名(数据个数)

变量名.size()  //动态数组的大小  

如有问题欢迎来讨论。。。。

成绩排序

原文:https://www.cnblogs.com/cmkbk/p/12346037.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!