C语言作业8
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 集合排序(选做)
成绩: 5 / 折扣: 0.8
现有若干个集合的数据,每个数据集合可以自选一个指标参加排序。这些指标包含如下四种:
• Min ,取集合中元素的最小值 • Max ,取集合中元素的最大值
• Mean ,取集合中元素的平均值,平均值的计算公式为: (V1+V2+…+Vn) / n •
Median ,取集合中元素的中值,中值的计算公式为: (Vmin+Vmax) / 2
读入数据后,请根据各个集合选择的指标对这些集合进行降序排列,每个集合内的元素请升序排列。
输入:
每行一个集合。[ ] 内为该集合选取的用于集合间排序的指标。随后为集合内各个元素,元素个数不定,以空格分隔。
若输入行的第一个字符为“*”,则表示输入数据结束。
输出:
每行输出一个集合。{ }内为计算出该集合的排序指标值,随后为该集合的各个元素的升序排列。
测试输入 期待的输出
时间限制
内存限制 额外进程
测
试用例 1 以文本方式显示 1. [Max]8 3 15✪ 2. [Min]9 10 1 2 7✪ 3. [Median]2 4✪ 4. [Mean]30 20 10✪ 5. *✪
以文本方式显示
1.
{20}10 20 30✪ 2. {15}3 8 15✪ 3. {3}2 4✪
4.
{1}1 2 7 9 10✪
1秒
64M 0 测试用
例
以文本方式显示 1. [Max]12 344 9 25 65 76 3 0 23✪ 以文本方式显示 1. {87686}12 1199 3292 12332 12344 87686✪ 1秒 64M
#include
#include
#include
{
char type[8];
int typeValue;
int data[100];
int n_data;
}line;
int stringToInt(char str[]) {
int returnValue=0;
int n=strlen(str);
for(int i=0;i { returnValue=returnValue+((int)str[i]-48)*pow(10.0,--n); } return returnValue; } void inputToLineData(line * l,char input[]) { int n,i;//line length n=strlen(input); for(i=0;i { if(input[i+1]==']')break; l->type[i]=input[i+1]; } l->type[i]='\0'; l->n_data=0; int numStart=i+2; char str[100][10]; int m=0,j=0; for(i=numStart;i { if(input[i]==' ') { str[j][m]='\0'; j++; m=0; l->n_data++; } else str[j][m++]=input[i]; } str[j][m]='\0'; l->n_data++; l->data[0]=0; for(i=0;i { l->data[i]=stringToInt(str[i]); } } void sort(int data[],int n) { int i,j,k; for(i=0;i for( j=0;j { if(data[j]>data[j+1]) { k=data[j]; data[j]=data[j+1]; data[j+1]=k; } } } int getTypevalue(line l) { int i,j,k; if(strcmp(l.type,"Max")==0) { int Max; Max=l.data[0]; for(i=0;i { if(l.data[i]>Max) Max=l.data[i]; } return Max; } if(strcmp(l.type,"Min")==0) { int Min; Min=l.data[0]; for(i=0;i { if(l.data[i] return Min; } if(strcmp(l.type,"Median")==0) { int Max; Max=l.data[0]; for(i=0;i { if(l.data[i]>Max) Max=l.data[i]; } int Min; Min=l.data[0]; for(i=0;i { if(l.data[i] } if(strcmp(l.type,"Mean")==0) { int sum=0; for(i=0;i { sum=sum+l.data[i];