文章目录
- 0. 编译、运行、测试本章中的程序
- 1. 假设我们希望要找出一个数值集的中值;同时假设到目前为止,我们已经读进一些数值了。而且不清楚还要再读进多少个值。证明:我们不能丢掉已经读到的任何值。
- 2. 把一个整数集分为个数相等的四个部分,而且第一个部分的含有的整数值比其他各个部分的都大,第二部分的比第一部分的小,但比其他的两部分大,剩下的以此类推。按照要求,编写程序,并打印这四个部分
- 3. 编写一个程序来计算在它的输入中每个不同的单词出现的次数
- 4. 编写一个程序来报告它的输入中最长的和最短的字符的长度
- 5. 编写一个程序用来同时跟踪n个学生的成绩。要求程序能够同时保持两个向量的同步:第一个保存学生的姓名;第二个保存总成绩,总成绩能根据读到的输入来计算。假定家庭作业成绩的个个数是固定的。
- 参考
0. 编译、运行、测试本章中的程序
# include <iostream>
# include<ios>
#include <iomanip>
#include <string>
#include<vector>
# include <algorithm>
using namespace std;
int main()
{
//输入学生姓名
string name;
cout << "Please enter name: " << endl;
cin >> name;
//输入期中,期末分数
double mid, final;
cout << "Please enter mid and final grades:" << endl;
cin >> mid >> final;
//输入homework 计算中值
cout << "Please enter homework:" << endl;
vector <double> homework;
double x;
while (cin >> x)
{
homework.push_back(x);
}
typedef vector<double>::size_type vec_sz;
vec_sz size = homework.size();
//判断homework是否为空
if (size == 0)
{
cout << "Please enter your grades again:" << endl;
return 1;
}
//排序
sort(homework.begin(), homework.end());
double median;
median = size % 2 == 0 ? (homework[size / 2] + homework[size /2 -1]) / 2 : homework[size / 2];
//计算成绩,设置精度
streamsize prec = cout.precision();
cout << "grades is :" << endl << setprecision(3)
<< 0.2 * mid + 0.4 * final + 0.4 * median
<< setprecision(prec) << endl;
}
1. 假设我们希望要找出一个数值集的中值;同时假设到目前为止,我们已经读进一些数值了。而且不清楚还要再读进多少个值。证明:我们不能丢掉已经读到的任何值。
中值是一个可将数值集合划分为相等的上下两部分的数值。对于有限的数集,通过把所有的值高低排序后找出正中间的一个作为中位数。中间点取决于所有的数值。
由此可知,如果任何一个我们已经读到的值被丢弃,则会改变原先中间点的位置,这样就得不出准确的中值。
2. 把一个整数集分为个数相等的四个部分,而且第一个部分的含有的整数值比其他各个部分的都大,第二部分的比第一部分的小,但比其他的两部分大,剩下的以此类推。按照要求,编写程序,并打印这四个部分
#include<iostream>
#include <string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
//输入整数
cout << "Please enter integers:" << endl;
int x;
vector<int> integers;
while (cin >> x)
{
integers.push_back(x);
}
sort(integers.begin(), integers.end());
typedef vector<int>::size_type vec_size;
vec_size size;
//集合总长度
size = integers.size();
//判断是否为空
if (size == 0)
{
cout << "no integer inside!!! " << endl;
}
//集合中间位置
int mid = size / 2;
//集合四分之一位置
int quarter = size /4;
cout << "the first quarter :" << endl;
for (int i = 0; i != quarter; ++i)
{
cout << integers[i] << endl;
}
cout << "the second quarter :" << endl;
for (int i = quarter; i != mid; ++i)
{
cout << integers[i] << endl;
}
cout << "the third quarter :" << endl;
for (int i = mid; i != (mid + quarter); ++i)
{
cout << integers[i] << endl;
}
cout << "the last quarter :" << endl;
for (int i = mid + quarter; i != size; ++i)
{
cout << integers[i] << endl;
}
return 0;
}
3. 编写一个程序来计算在它的输入中每个不同的单词出现的次数
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
//定义一个放单词的向量,和放次数的
vector <string> words;
vector <int> count;
//单词的个数
typedef vector <string>::size_type vec_size;
//
cout << "Please enter word:" << endl;
string str;
while (cin >> str)
{
bool same = false;
for (vec_size i = 0; i != words.size(); ++i)
{
if (str == words[i])
{
++count[i];
same = true;
}
}
//不同的单词
if (!same)
{
words.push_back(str);
count.push_back(1);
}
}
for (vec_size i = 0; i != words.size(); ++i)
{
cout << words[i] << " appear:" << count[i] << "times" << endl;
cout << words.size() << endl;//这里表示容器里面不相同的元素的个数
}
}
4. 编写一个程序来报告它的输入中最长的和最短的字符的长度
#include< iostream>
#include<string>
#include<vector>
#include <algorithm>
using namespace std;
int main()
{
typedef vector<string>::size_type vec_sz;
//输入:
cout << "Please enter your words:" << endl;
string str;
vec_sz longest_sz = 0;
string longest;
vec_sz shortest_sz = 0;
string shortest;
while (cin >> str)
{
if (longest_sz == 0 || str.size() > longest_sz)
{
longest = str;
longest_sz = str.size();
}
//shortest_sz == 0这个一定要写 不然 找不到最小的那个
if (shortest_sz == 0 || str.size() < shortest_sz)
{
shortest = str;
shortest_sz = str.size();
}
}
cout <<"最长的字符:" << longest << endl;
cout << longest_sz << endl;
cout<<"最短的字符:" << shortest << endl;
cout << shortest_sz << endl;
}
5. 编写一个程序用来同时跟踪n个学生的成绩。要求程序能够同时保持两个向量的同步:第一个保存学生的姓名;第二个保存总成绩,总成绩能根据读到的输入来计算。假定家庭作业成绩的个个数是固定的。
#include<algorithm>
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
int n;
cout << "Please enter student number:" << endl;
cin >> n;
vector<string> vName;
vector<double> vGrade;
string name;
for (int i = 0; i < n; ++i)
{
cout << "Please enter student " << i <<" name:" << endl;
cin >> name;
vName.push_back(name);
//3门成绩
int num = 3;
double grade;
double gradeCount = 0 ;
cout << "Please enter 3 grades:" << endl;
for (int i = 0; i != 3; ++i)
{
cin >> grade;
gradeCount += grade;
}
vGrade.push_back(gradeCount);
}
for (vector<string>::size_type i = 0; i < vName.size(); ++i)
{
cout << "第" << i << "个学生" <<vName[i] << " " <<"成绩是:"<< vGrade[i] << endl;
}
}
参考
https://www.cnblogs.com/code1992/p/9296568.html