求帮助,急!C++的题目, 求程序+解题思路,分析。有完整的实验报告也行,要用c++编写程序,不是c语言哈

编一通用排序程序,程序可以对任意类型的数值常数或字符串构成的行进行排序,通过人机对话选择程序是按数值进行排序还是按字符顺序进行排序。排序是针对数据文件的。例如
初识数据为:12,24,9,128,3,76,345
按数值大小排序应为:3,9,12,24,76,128,345
按字符串大小排序应为:12,128,24,3,345,76,9

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
const int LEN=1000;
const int NUMLEN=10;
struct Ele
{
    int n;
    char num[NUMLEN];
}ele[LEN];
void deal(int m)
{
    int tmp[NUMLEN];
    int n=ele[m].n;
    int cou=0;
    while(n!=0)
    {
        tmp[cou]=n%10;
        n=n/10;
        cou++;
    }
    for(int i=0;i<cou;i++)
        ele[m].num[i]=tmp[cou-i-1]+'0';
    ele[m].num[cou]=0;
}
int cmpn(const void *a,const void *b)
{
    return (*(struct Ele *)a).n-(*(struct Ele *)b).n>0?1:-1;
}
int cmpnum(const void *a,const void *b)
{
    return strcmp((*(struct Ele *)a).num,(*(struct Ele *)b).num)>0?1:-1;
}
int main()
{
    int n;
    cout<<"请输入元素数目:";
    cin>>n;
    cout<<"请依次输入"<<n<<"个元素并以空格隔开:"<<endl;
    for(int i=0;i<n;i++)
    {
        cin>>ele[i].n;
        deal(i);
    }
    int choice;
    cout<<"请输入你的选择:1.按数值大小;2.按字符串大小"<<endl;
    cin>>choice;
    if(choice==1)
        qsort(ele,n,sizeof(struct Ele),cmpn);
    else if(choice==2)
        qsort(ele,n,sizeof(struct Ele),cmpnum);
    cout<<"结果为:"<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<ele[i].n;
        //cout<<" "<<ele[i].num<<" ";
        if(i!=n-1)
            cout<<" ";
    }
    cout<<endl;
    return 0;
}

追问

这一段程序有点不明白,能帮我分析下吗

还有就是error C2374: 'i' : redefinition; multiple initialization我在运行的时候出现了这个错误,是哪里出错了啊

追答

你邮箱多少?字数超过限制了,我发你邮箱

追问

1 4 4 6082905 @ qq.com

温馨提示:答案为网友推荐,仅供参考
相似回答