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

本文聚焦于C++编程,介绍如何处理批量数据,包括读取输入、排序及查找操作。以计算一组数据的中值为例,探讨C++在实际问题中的应用。同时,提供了程序示例3-2和3-4,讨论如何处理不同单词计数。参考链接指向CSDN博客,分享更多C++输入输出的整理内容。
摘要由CSDN通过智能技术生成


#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());

	//计算多个家庭成绩的中值median
	vec_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>  //使用sort
using 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值