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

编一通用排序程序,程序可以对任意类型的数值常数或字符串构成的行进行排序,通过人机对话选择程序是按数值进行排序还是按字符顺序进行排序。排序是针对数据文件的。例如初识数据为:... 编一通用排序程序,程序可以对任意类型的数值常数或字符串构成的行进行排序,通过人机对话选择程序是按数值进行排序还是按字符顺序进行排序。排序是针对数据文件的。例如
初识数据为:12,24,9,128,3,76,345
按数值大小排序应为:3,9,12,24,76,128,345
按字符串大小排序应为:12,128,24,3,345,76,9
展开
 我来答
南邮首席鉴黄师
推荐于2016-09-18
知道答主
回答量:2
采纳率:0%
帮助的人:2.4万
展开全部
#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我在运行的时候出现了这个错误,是哪里出错了啊

追答
你邮箱多少?字数超过限制了,我发你邮箱
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式