课程设计:混合数据排序

来源:互联网 发布:淘宝美工招聘信息 编辑:程序博客网 时间:2024/04/28 17:43

一、题目:混合数据排序

二、目的与要求

1. 目的:

(1)通过该题目的设计,培养学生综合利用C++语言解决问题的能力,使学生理解和掌握C++中组的应用及

排序算法,将所学知识转化为分析和设计简单实际问题的能力,并学会查资料和工具书,进行创新设计。

(2)提高学生建立程序文档、归纳总结的能力。

2. 基本要求:

(1)要求用C++语言编程,在Visual C++环境下调试完成;

(2)要求使用C++的结构体和自定义函数完成设计;

(3)在VC++6.0环境中,学会调试程序的方法,及时查究错误,独立调试完成。

(4)程序调试通过后,完成程序文档的整理,加必要的注释。

三、设计方法和基本原理

1. 课题功能描述

开发一个排序程序,用户输入长度(数据个数)可变的数据,输入字母,则按字符排序;输入数字,则按

数字排序;输入字母和数字的混合数据,则首先区分数字和字母,然后各自排序。

2. 基本原理

1) 通过ASCII判断输入的是否为字母;

2)用两个数组各自保存字符和数字。

3. 问题解决方案(编程要求):

编写程序,实现区分混合数据并实现排序,并且由用户选择升序或降序两种方式。

例如:输入数据“abd3564fe”,则排序结果如选择“降序”如下图所示:、


四、主要技术问题的描述:

通过两个一维数组保存两种类型的数据,由于数组的大小不确定,可使用new函数分配数组存储空间。排序

的算法可使用冒泡法或比较互换法,或其他方法。

五、创新要求

实现对字符串和数字的混合排序。

六、课程设计的考核方式及评分方法

1.考核方式

(1) 学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h头文件放

到一个文件夹里(如果是基于MFC的编程,另外还包括源程序的压缩包)上传到所对应班级的学生名称相应

文件夹中。

(2) 课程设计结束时,在机房当场验收。教师提供测试数据,由学生运行所设计的系统,检查运行结果

是否正确,并回答教师提出的有关问题。

2.评分方法

根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。

七、书写设计报告的要求(详细内容见“设计报告模板”)

八、说明:课程设计的有关文档,“设计报告模板”和“课程设计要求”请在下载任务书处下载。

 

急忙急忙写额,不完善的地方希望指出:

PaiXu.cpp源代码如下:

#include <iostream>#include "string"#include <stdio.h>void Ascending(char *pAscend,int nAsNum);    //声明升序函数void Descending(char *pDescend,int nDeNum);  //声明降序函数using namespace std;int main(){char *pCin=new char[1000]; //申请空间存放用户输入的数据char *pNum=new char[1000]; //申请空间存放用户输入数据中的数字char *pLetter=new char[1000]; //申请空间存放用户输入数据中的字母cout<<"请输入数据:"<<endl;cin>>pCin;int nNum=0;for (int i=0;pCin[i]!='\0';i++){nNum++;}cout<<"输入的字符个数是:"<<nNum<<endl;int nNum_Num=0;  //数字个数int nNum_Letter=0;  //字母个数//判别是数字还是字母,分别存在各自的数组中for (int j=0;j<nNum;j++){if ((pCin[j]<='9')&&(pCin[j]>='0')){pNum[nNum_Num]=pCin[j];nNum_Num++;}if ((pCin[j]<='z')&&(pCin[j]>='a')){pLetter[nNum_Letter]=pCin[j];nNum_Letter++;}}cout<<"字符为数字的是:";for (int m=0;m<nNum_Num;m++){cout<<pNum[m];}cout<<endl;cout<<"字符为字母的是:";for (int n=0;n<nNum_Letter;n++){cout<<pLetter[n];}cout<<endl;cout<<"其中数字个数是:"<<nNum_Num<<endl;cout<<"其中字母个数是:"<<nNum_Letter<<endl;cout<<endl;cout<<"选择排序方式(1--升序  2--降序):";char cHit;while(1){cin>>cHit;switch (cHit){case '1':cout<<"数字升序为:";Ascending(pNum,nNum_Num);cout<<"字母升序为:";Ascending(pLetter,nNum_Letter);break;case '2':cout<<"数字降序为:";Descending(pNum,nNum_Num);cout<<"字母降序为:";Descending(pLetter,nNum_Letter);break;default:cout<<"输入不符合要求!"<<endl;break;}cout<<endl;cout<<"选择排序方式(1--升序  2--降序):"<<endl;}    cout<<endl;delete [] pCin;delete [] pNum;delete [] pLetter;return 0;}//升序函数  采用冒泡法void Ascending(char *pAscend,int nAsNum){int i=0,j=0,n=0;char temp;for (i=nAsNum-1;i>0;i--){for(j=0;j<i;j++){if (pAscend[j]>=pAscend[j+1]){temp = pAscend[j];pAscend[j] = pAscend[j+1];pAscend[j+1] = temp;}}}for (n=0;n<nAsNum;n++){cout<<pAscend[n];}cout<<endl;}//降序函数   采用冒泡法void Descending(char *pDescend,int nDeNum){int i=0,j=0,n=0;char temp;for (i=nDeNum-1;i>0;i--){for(j=0;j<i;j++){if (pDescend[j]<=pDescend[j+1]){temp = pDescend[j];pDescend[j] = pDescend[j+1];pDescend[j+1] = temp;}}}for (n=0;n<nDeNum;n++){cout<<pDescend[n];}cout<<endl;}

 

 

运行出来的如下:

原创粉丝点击