标题:如何实现排序后输出
只看楼主
xiao2
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-2-21
结帖率:100%
已结贴  问题点数:20 回复次数:7 
如何实现排序后输出
#include<iostream>
#include<string>
# define n 5
using namespace std;
struct student
{
    int num;
    string name;
    int score[3];
};
struct classes
{
    student info;
    float average;
};
void main()
{
    void input(classes s[]);
    void paixu(classes s[]);
    void output(classes s[]);
    classes s[n];
    input(s);
    paixu(s);
    output(s);
}
void input(classes s[])
{
    int i,j;
    cout<<"please input:"<<endl;
    for(i=0;i<n;i++)
    {
        cin>>s[i].info.num>>s[i].info.name;
        for(j=0;j<3;j++)
            cin>>s[i].info.score[j];
    }
}
void paixu(classes s[])
{
    int i,j;
    float t;
    for(i=0;i<n;i++)
    {
        for(s[i].average=0,j=0;j<3;j++)
        {
            s[i].average+=s[i].info.score[j];
        }
         s[i].average=s[i].average/3;
    }
    for(j=0;j<n;j++)
        for(i=0;i<n-j;i++)
            if(s[i].average<s[i+1].average)
            {
                t=s[i].average;
                s[i].average=s[i+1].average;
                s[i+1].average=t;
            }
}
void output(classes s[])
{
    int i;
    for(i=0;i<n;i++)
    cout<<s[i].info.num<<" "<<s[i].info.name<<" "<<s[i].info.score[0]<<" "<<s[i].info.score[1]<<" "<<
    s[i].info.score[2]<<" "<<s[i].average<<" "<<endl;
}
搜索更多相关主题的帖子: void name average classes include 
2011-03-26 20:10
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
得分:10 
void paixu(classes s[])
{
    int i,j;
    float t;
    for(i=0;i<n;i++)
    {
        for(s[i].average=0,j=0;j<3;j++)
        {
            s[i].average+=s[i].info.score[j];
        }
         s[i].average=s[i].average/3.0f; //注意数据类型
    }
    for(j=0;j<n-1;j++)  //用选择排序吧
        for(i=j+1;i<n;i++)
            if(s[j].average<s[i].average)
            {
                t=s[i].average;
                s[i].average=s[j].average;
                s[j].average=t;
            }
}

   唯实惟新 至诚致志
2011-03-26 20:23
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:10 
选择排序是用这里还是比较合适的。楼上红色部分堪称标准,跟书里的一样。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-26 20:40
xiao2
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-2-21
得分:0 
回复 2楼 qq1023569223
谢谢
2011-03-27 08:52
xiao2
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-2-21
得分:0 
回复 2楼 qq1023569223
是不是输出函数出问题这样还是实现不了排序后输出
2011-03-27 08:56
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
得分:0 
void paixu(classes s[])
{
    int i,j;
    float t;
    for(i=0;i<n;i++)
    {
        s[i].average=0; //这个没有全部初始化为0
        for(j=0;j<3;j++)
        {
            s[i].average+=s[i].info.score[j];
        }
         s[i].average=s[i].average/3.0f; //注意数据类型
    }
    for(j=0;j<n-1;j++)  //用选择排序吧
        for(i=j+1;i<n;i++)
            if(s[j].average<s[i].average)
            {
                t=s[i].average;
                s[i].average=s[j].average;
                s[j].average=t;
            }
}

   唯实惟新 至诚致志
2011-03-27 09:48
xiao2
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-2-21
得分:0 
回复 6楼 qq1023569223
貌似不是那个问题输出的结果无法实现排序,感觉是输出函数那边的问题。你能否尝试运行下。
2011-03-27 18:18
xiao2
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-2-21
得分:0 
回复 6楼 qq1023569223
#include<iostream>
#include<string>
# define n 5
using namespace std;
struct student
{
    int num;
    string name;
    int score[3];
};
struct classes
{
    student info;
    float average;
};
void main()
{
    void input(classes s[]);
    void paixu(classes s[]);
    void output(classes s[]);
    classes s[n];
    input(s);
    paixu(s);
    output(s);
}
void input(classes s[])
{
    int i,j;
    cout<<"please input:"<<endl;
    for(i=0;i<n;i++)
    {
        cin>>s[i].info.num>>s[i].info.name;
        for(j=0;j<3;j++)
            cin>>s[i].info.score[j];
    }
}
void paixu(classes s[])
{
    int i,j,k;
    string l;
    float t;
    for(i=0;i<n;i++)
    {
        for(s[i].average=0,j=0;j<3;j++)
        {
            s[i].average+=s[i].info.score[j];
        }
            s[i].average=s[i].average/3;
    }
        for(j=0;j<n;j++)
        for(i=0;i<n-j;i++)
            if(s[i].average<s[i+1].average)
            {
                t=s[i].average;
                s[i].average=s[i+1].average;
                s[i+1].average=t;
                k=s[i].info.num;
                s[i].info.num=s[i+1].info.num;
                s[i+1].info.num=t;
                l=s[i].info.name;
                s[i].info.name=s[i+1].info.name;
                s[i+1].info.name=l;
            }
}
void output(classes s[])
{
    int i;
    for(i=0;i<n;i++)
    cout<<s[i].info.num<<" "<<s[i].info.name<<" "<<s[i].info.score[0]<<" "<<s[i].info.score[1]<<" "<<
    s[i].info.score[2]<<" "<<s[i].average<<" "<<endl;
}
    可以实现了
2011-03-27 21:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-334841-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.886228 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved