首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小弟我会一维数组插入排序,小弟我依理写的结构数组排序如何就错了

2013-01-20 
我会一维数组插入排序,我依理写的结构数组排序怎么就错了?结构数组,插入排序[解决办法]我把升序情況改了,

我会一维数组插入排序,我依理写的结构数组排序怎么就错了?
小弟我会一维数组插入排序,小弟我依理写的结构数组排序如何就错了 结构数组,插入排序
[解决办法]
我把升序情況改了,結果如圖,降序情況你可以自己改改,權當練習.


#include <iostream>
using namespace std;
 
//定义全局变量等
struct s
{
    char ID[15];
    double S1,S2,S3,Avg;
    char name[15];
};
int num;
s *p_s=NULL;
 
//数据输入及平均分填充
void data()
{    cout<<"请输入总人数"<<endl;
    cin>>num;
    p_s = new s[num];
 
    for(int i=0;i!=num;i++) 
        {
            cout<<"依次输入ID 分数1 分数2 分数3 姓名 中间以回车或空格区分"<<endl;
            cin>>p_s[i].ID>>p_s[i].S1>>p_s[i].S2>>p_s[i].S3>>p_s[i].name;
        }
    //数据处理计算出平均值填充
    for(int i=0;i!=num;i++) 
        p_s[i].Avg=(p_s[i].S1+p_s[i].S2+p_s[i].S3)/3;
}
 
//排序   
void select_sort (char  ad, s* p_s)
{   
    switch(ad)
    {
        case 'a':
     
            for(int j=0;j!=num;j++)
                {
                     //double key=p_s[j].Avg;
                     s key;                     
                     key = p_s[j];
                     int i=j-1;
                     while( i>-1 && p_s[i].Avg>key.Avg)
                         {
                              p_s[i+1]=p_s[i];
                             i--;
                         }
                     //p_s[i+1]=p_s[j];
                     p_s[i+1] = key;


                }
                     
            break;   

        case 'd':
            for(int j=0;j!=num;j++)
                {
                     double key=p_s[j].Avg;
                     int i=j-1;                     
                     while( i>-1 && p_s[i].Avg<key)
                         {
                              p_s[i+1]=p_s[i];
                             i--;
                         }
                    p_s[i+1]=p_s[j];
                }
            break;
 
    }

}
 
int main ()
{   
    data();
     
    cout<<"排序方式 a升 d减少";
    char ad; 
    cin>>ad; 
    select_sort (ad,  p_s);
     
    //输出全部人结果 
    cout<<"根据平均分排名后: "<<endl;
    for(int i=0;i!=num;i++) 
        cout<<"学号 "<<p_s[i].ID
            <<"姓名 "<<p_s[i].name
            <<"平均分 "<<p_s[i].Avg<<endl;
         
    //回收内存
     delete []p_s;
}


小弟我会一维数组插入排序,小弟我依理写的结构数组排序如何就错了

热点排行