求帮助,急!C++的题目, 求程序+解题思路,分析。有完整的实验报告也行,要用c++编写程序,不是c语言哈
编一通用排序程序,程序可以对任意类型的数值常数或字符串构成的行进行排序,通过人机对话选择程序是按数值进行排序还是按字符顺序进行排序。排序是针对数据文件的。例如初识数据为:...
编一通用排序程序,程序可以对任意类型的数值常数或字符串构成的行进行排序,通过人机对话选择程序是按数值进行排序还是按字符顺序进行排序。排序是针对数据文件的。例如
初识数据为:12,24,9,128,3,76,345
按数值大小排序应为:3,9,12,24,76,128,345
按字符串大小排序应为:12,128,24,3,345,76,9 展开
初识数据为:12,24,9,128,3,76,345
按数值大小排序应为:3,9,12,24,76,128,345
按字符串大小排序应为:12,128,24,3,345,76,9 展开
1个回答
展开全部
#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;
}
更多追问追答
追问
追答
你邮箱多少?字数超过限制了,我发你邮箱
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询