Accelerated C++:Practical Programming by Example第3章:使用批量数据

来源:互联网 发布:日本经济数据怎么找 编辑:程序博客网 时间:2024/05/20 23:36


#include<iostream>#include<string>#include<iomanip>//定义控制器setprecision,用于指明输出包含的位数#include<ios>   //定义类型streamsize,表示长度using namespace std;int main(){cout<<"Please enter your first name:";string name;cin>>name;cout<<"Hello,"<<name<<"!"<<endl;cout<<"Please enter your midterm and final exam grades:";double midterm,final;cin>>midterm>>final;cout<<"Note that you must provide the end-of-file character when you're finished typing—typically, Ctrl-D"<<endl;cout<<"请注意,您在结束键入时必须提供文件结束字符,通常为 Ctrl+D,也可以是Ctrl+D。  ---有道词典"<<endl;cout<<"Please enter your homework grades:""followed by end-of-file:";  //多个成绩int count=0;double sum=0;double x;   //录入多个成绩while(cin>>x){++count;sum+=x;}streamsize prec=cout.precision();cout<<"Your final grade is "<<setprecision(3)<<0.2*midterm+0.4*final+0.4*sum/count<<setprecision(prec)<<endl;return 0;}

将数据集合存储在向量vector中:

1.读取每一个输入数据并存储

2.排序

3.查找

例子:计算一组输入数据的中值

#include<algorithm>  #include<iostream>#include<string>#include<iomanip>#include<vector>using namespace std;int main(){cout<<"请输入多个数字:";double x;vector<double> numbers;  //定义一个向量,向量名为numbers,  类型为vector<double>,保存一组double类型的值//  vector<string> character;  定义一个向量,向量名为character,类型为vector<string>, 保存一组string类型的值while(cin>>x)  //利用while循环从标准输入流读取数值,numbers.push_back(x); //并存储在向量numbers.类似greeting.size(),push_back是一个成员函数。cout<<"您已输入"<<numbers.size()<<"个数字"<<endl;  //push_back副作用:向量名.size()的值会+1.if(numbers.size()==0){cout<<endl<<"请重新输入。"<<endl;return 1;  //表明程序运行失败}sort(numbers.begin(),numbers.end());  //sort函数定义在头文件<algorithm>int mid=numbers.size()/2;double median;median=(numbers.size()%2==0)?(numbers[mid]+numbers[mid-1])/2:numbers[mid];cout<<"中值为:"<<median<<endl;/*获取numbers的长度typedef vector<double>::size_type vec_sz;  //vector类型定义了vector<double>::size_type类型和名为size的函数。使用size_type专门保存向量的最大长度,而int float是有范围的,//而且位数与系统环境相关。                                           vec_sz size=numbers.size();*/}

原版完整程序(有修改):

#include<algorithm>#include<iomanip>#include<ios>#include<iostream>#include<string>#include<vector>using namespace std;int main(){//输入输出问候语cout<<"Please enter your first name:";string name;cin>>name;cout<<"Hello,"+name<<"!"<<endl;//输入期中和期末成绩cout<<"Please enter your midterm and final exam grades:";double midterm,final;cin>>midterm>>final;//输入多个家庭成绩cout<<"Please enter your homework grades,""followed by end-of-file:";vector<double> homework;double x;while(cin>>x)homework.push_back(x);  //至此,向量hoemework存放了多个家庭成绩//检查homework是否为空,为空说明没有输入数据,弹出警告typedef vector<double>::size_type vec_sz;  //vector<double>::size_type 是无符号整数类型,不能存放负数,vector<double>类的对象会根据需要动态增长来容纳其输入。vec_sz size=homework.size();if(size==0){cout<<endl<<"You must enter your grades."<<"Please try again!"<<endl;return 1;}//对多个家庭成绩从大到小排序sort(homework.begin(),homework.end());//计算多个家庭成绩的中值medianvec_sz mid=size/2;double median;median=(size%2==0)?(homework[mid]+homework[mid-1])/2:homework[mid];//输出总成绩streamsize prec=cout.precision();cout<<"Your final grade is "<<setprecision(3)<<0.2*midterm+0.4*final+0.4*median<<setprecision(prec)<<endl;return 0;}


3-2:

#include<iostream>#include<string>#include<vector>   //使用vector类型#include<algorithm>  //使用sortusing namespace std;int main(){cout<<"请输入4的倍数个整数,CTRL+D结束:";vector<double> test;double x;while(cin>>x){test.push_back(x);}typedef vector<double>::size_type vec_sz;vec_sz size=test.size();if(size==0){cout<<"输入数据为空!"<<endl;return 1;}sort(test.begin(),test.end());cout<<"输入数据从小到大:";for(vec_sz i=0;i<size;++i){cout<<test[i]<<" ";}cout<<"\n";//cout<<"第1部分:";for(vec_sz i=size/4*3;i<size;++i){cout<<test[i]<<" ";}cout<<"\n";//cout<<"第2部分:";for(vec_sz i=size/2;i<size/4*3;++i){cout<<test[i]<<" ";}cout<<"\n";//cout<<"第3部分:";for(vec_sz i=size/4;i<size/2;++i){cout<<test[i]<<" ";}cout<<"\n";cout<<"第4部分:";for(vec_sz i=0;i<size/4;++i){cout<<test[i]<<" ";}cout<<endl;}

3-4:  不会  编写一个程序计算它的输入中每个不同单词

3-5:

#include<iostream>#include<string>#include<vector>using namespace std;int main(){cout<<"输入姓名:";string x;cin>>x;cout<<"输入多个分数:";vector<double> grade;double y;int count=0;double sum=0;while(cin>>y){grade.push_back(y);sum+=y;++count;}cout<<"姓名:"<<x<<",平均分为"<<sum/count<<endl;return 0;}





收藏:

把c++的输入输出整理 - rainkin的专栏 - 博客频道 - CSDN.NET

http://blog.csdn.net/rainkin1993/article/details/8441611




0 0
原创粉丝点击