C语言作业8

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 typedef struct line

{

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;in_data;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];

相关文档
最新文档