输入:
7
第一行Pb-193 3000 300 150
第二行Pb-190 3000 71 35.5
第三行Pb-186 3000 4.86 2.43
第四行Th-225 1500 523 261.5
第五行Th-237 1500 290 145
第六行O-16 2000 122.24 61.12
第七行Ti-51 2500 346 178
从左往右数为一到四列
输出:
- 分别输出第三列最大和最小的值的第一列数据
- 输出第二列所有数据的二分之一的平均数
- 输出第三列减第四列小于100的第一列数据
输入:
7
第一行Pb-193 3000 300 150
第二行Pb-190 3000 71 35.5
第三行Pb-186 3000 4.86 2.43
第四行Th-225 1500 523 261.5
第五行Th-237 1500 290 145
第六行O-16 2000 122.24 61.12
第七行Ti-51 2500 346 178
从左往右数为一到四列
输出:
定义一个数据结构,把每行数据拆分到数据结构数组就简单了啊
这里的第3列是从1开始算起,还是从0开始算起?
第4列减去第3列小于100,无论从0开始算起,还是从1开始算起,好像都满足,而且都是负数
#include <iostream>
using namespace std;
typedef struct _info
{
char s[20];
int a1,a2;
float a3,a4;
}info;
void fun1(info *data,int n)
{
int max;
for(int i=0;i<n;i++)
{
if(i==0 || data[i].a3 > data[max].a3)
max = i;
}
cout<<"第三列最大的值的第一列数据是:"<<data[max].a1<<endl;
}
void fun2(info *data,int n)
{
int min;
for(int i=0;i<n;i++)
{
if(i==0 || data[i].a3 < data[min].a3)
min = i;
}
cout<<"第三列最小的值的第一列数据是:"<<data[min].a1<<endl;
}
void fun3(info *data,int n)
{
int sum=0;
for(int i=0;i<n;i++)
{
sum += data[i].a2;
}
cout<<"第二列所有数据的二分之一的平均数是:"<<sum/(2.0*n)<<endl;
}
void fun4(info *data,int n)
{
cout<<"第三列减第四列小于100的第一列数据分别是:\n";
for(int i=0;i<n;i++)
{
if((data[i].a3-data[i].a4) < 100)
cout<<data[i].a1<<endl;
}
}
int main()
{
info data[100];
int n;
cin>>n;
getchar();
char s[1000];
for(int i=0;i<n;i++)
{
gets(s);
char * p = strtok(s,"-");
strcpy(data[i].s,p);
char *q = strtok(NULL,"-");
sscanf(q,"%d %d %f %f",&data[i].a1,&data[i].a2,&data[i].a3,&data[i].a4);
}
fun1(data,n);
fun2(data,n);
fun3(data,n);
fun4(data,n);
return 0;
}