C++Primer(第10章课后程序题源代码)
来源:互联网 发布:plc编程标准 编辑:程序博客网 时间:2024/05/17 23:25
10.1
#include<iostream>#include<fstream>#include<vector>#include<algorithm>using namespace std;int main(int argc,char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } vector<int> vi; int val; while (in >> val) { vi.push_back(val); } cout << "请输入要搜索的整数:"; cin >> val; cout << "序列中包含" << count(vi.begin(), vi.end(), val) << "个" << val; return 0;}
#include<iostream>#include<fstream>#include<vector>#include<algorithm>using namespace std;int main(int argc,char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } vector<int> vi; int val; while (in >> val) { vi.push_back(val); } cout << "请输入要搜索的整数:"; cin >> val; int c = 0; for (auto iter = vi.begin(); iter != vi.end(); iter++) if (*iter == val) c++; cout << "序列中包含" <<c << "个" << val; return 0;}
10.2
#include<iostream>#include<fstream>#include<vector>#include<list>#include<algorithm>#include<string>using namespace std;int main(int argc,char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } list<string> ls; string word; while (in >> word) ls.push_back(word); cout << "请输入要搜索的字符串:"; cin >> word; cout << "序列中包含" << count(ls.begin(), ls.end(), word) << "个" << word; return 0;}
10.3
#include<iostream>#include<fstream>#include<vector>#include<list>#include<algorithm>#include<string>#include<numeric>using namespace std;int main(int argc,char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } vector<int> vi; int val; while (in >> val) vi.push_back(val); cout << "序列中整数之和为" << accumulate(vi.begin(), vi.end(), 0) << endl; return 0;}
10.4
#include<iostream>#include<fstream>#include<vector>#include<list>#include<algorithm>#include<string>#include<numeric>using namespace std;int main(int argc,char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } vector<double> vd; double val; while (in >> val) vd.push_back(val); cout << "序列中浮点数之和为" << accumulate(vd.begin(), vd.end(),0.0) << endl; return 0;}
10.5
#pragma warning(disable:4996)#include<iostream>#include<algorithm>#include<string.h>using namespace std;int main(int argc, char *argv[]){ char *p[] = { "Hello", "World", "!" }; char *q[] = { strdup(p[0]), strdup(p[1]), strdup(p[2]) }; char *r[] = { p[0], p[1], p[2] }; cout << equal(begin(p), end(p), q) << endl; cout << equal(begin(p), end(p), r) << endl; return 0;}
10.6
#pragma warning(disable:4996)#include<iostream>#include<algorithm>#include<vector>#include<fstream>using namespace std;int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } vector<int> vi; int val; while (in >> val) { vi.push_back(val); cout << val << " "; } cout << endl; fill_n(vi.begin(), vi.size(), 0); for (auto iter = vi.begin(); iter != vi.end(); iter++) cout << *iter << " "; return 0;}
10.7
#pragma warning(disable:4996)#include<iostream>#include<algorithm>#include<vector>#include<fstream>#include<list>#include<iterator>using namespace std;int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } list<int> lst; vector<int> vec; int val; while (in >> val) { lst.push_back(val); } copy(lst.begin(), lst.end(), back_inserter(vec)); cout << equal(lst.begin(), lst.end(), vec.begin()) << endl; for (auto iter = vec.begin(); iter != vec.end(); iter++) cout << *iter << " "; cout << endl; return 0;}
#pragma warning(disable:4996)#include<iostream>#include<algorithm>#include<vector>#include<fstream>#include<list>#include<iterator>using namespace std;int main(int argc, char *argv[]){ vector<int> vec; vec.reserve(10); fill_n(back_inserter(vec), 10, 0); for (auto iter = vec.begin(); iter != vec.end(); iter++) cout << *iter << " "; cout << endl; return 0;}
10.9
#pragma warning(disable:4996)#include<iostream>#include<algorithm>#include<vector>#include<fstream>#include<list>#include<iterator>#include<string>using namespace std;inline void output_words(vector<string> &words){ for (auto iter = words.begin(); iter != words.end(); iter++) cout << *iter << " "; cout << endl;}void elimDups(vector<string> &words){ output_words(words); sort(words.begin(), words.end()); output_words(words); auto end_unique = unique(words.begin(), words.end()); output_words(words); words.erase(end_unique, words.end()); output_words(words);}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } vector<string> words; string word; while (in >> word) { words.push_back(word); } elimDups(words); return 0;}
10.11
#pragma warning(disable:4996)#include<iostream>#include<algorithm>#include<vector>#include<fstream>#include<list>#include<iterator>#include<string>using namespace std;inline void output_words(vector<string> &words){ for (auto iter = words.begin(); iter != words.end(); iter++) cout << *iter << " "; cout << endl;}bool isShorter(const string &s1, const string &s2){ return s1.size() < s2.size();}void elimDups(vector<string> &words){ output_words(words); sort(words.begin(), words.end()); output_words(words); auto end_unique = unique(words.begin(), words.end()); output_words(words); words.erase(end_unique, words.end()); output_words(words); stable_sort(words.begin(),words.end(), isShorter); output_words(words);}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } vector<string> words; string word; while (in >> word) { words.push_back(word); } elimDups(words); return 0;}
10.12
略
10.13
#pragma warning(disable:4996)#include<iostream>#include<algorithm>#include<vector>#include<fstream>#include<list>#include<iterator>#include<string>using namespace std;inline void output_words(vector<string>::iterator beg,vector<string>::iterator end){ for (auto iter = beg;iter!=end; iter++) cout << *iter << " "; cout << endl;}bool five_or_more(const string &s1){ return s1.size() >= 5;}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } vector<string> words; string word; while (in >> word) words.push_back(word); output_words(words.begin(), words.end()); auto iter = partition(words.begin(), words.end(), five_or_more); output_words(words.begin(), iter); return 0;}
10.14
#include<iostream>using namespace std;int main(int argc,char *argv[]){ auto sum = [](int a, int b){return a + b; }; cout << sum(1, 1) << endl; return 0;}
10.15
#include<iostream>using namespace std;void add(int a){ auto sum = [a](int b){return a + b; }; cout << sum(1) << endl;}int main(int argc,char *argv[]){ add(4); add(5); return 0;}
10.21
#include<iostream>#include<algorithm>using namespace std;void mutable_lambda(void){ int i = 5; auto f = [i]()mutable->bool{if (i > 0){ i--; return false; } else return true; }; for (int j = 0; j < 6; j++) cout << f() << " "; cout << endl;}int main(int argc, char *argv[]){ mutable_lambda(); return 0;}
10.22
#include<iostream>#include<fstream>#include<vector>#include<string>#include<algorithm>#include<functional>using namespace std;using namespace std::placeholders;string make_plural(size_t ctr, const string &word, const string &ending){ return (ctr == 1) ? word : word + ending;}inline void output_words(vector<string> &words){ for (auto iter = words.begin(); iter != words.end(); iter++) cout << *iter << " "; cout << endl;}bool check_size(const string &s, string::size_type sz){ return s.size() >= sz;}void biggies(vector<string>&words, vector<string>::size_type sz){ output_words(words); auto bc = count_if(words.begin(), words.end(), bind(check_size, _1, sz)); cout << bc << " " << make_plural(bc, "word", "s") << " of length " << sz << " or longer" << endl;}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败" << endl; exit(1); } vector<string> words; string word; while (in >> word) words.push_back(word); biggies(words, 6); system("pause"); return 0;}
10.24
#include<iostream>#include<fstream>#include<vector>#include<string>#include<algorithm>#include<functional>using namespace std;using namespace std::placeholders;string make_plural(size_t ctr, const string &word, const string &ending){ return (ctr == 1) ? word : word + ending;}bool check_size(const string &s, string::size_type sz){ return s.size() <= sz;}void biggies(vector<int> &vc, const string &s){ auto p = find_if(vc.begin(), vc.end(), bind(check_size, s, _1)); cout << "第" << p - vc.begin() + 1 << "个数" << *p << "大于等于" << s << "的长度" << endl;}int main(int argc, char *argv[]){ vector<int> vc = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; biggies(vc, "Hello"); biggies(vc, "everyone"); biggies(vc, "!"); system("pause"); return 0;}
10.25
#include<iostream>#include<fstream>#include<vector>#include<string>#include<algorithm>#include<functional>using namespace std;using namespace std::placeholders;string make_plural(size_t ctr, const string &word, const string &ending){ return (ctr == 1) ? word : word + ending;}void elimDups(vector<string> &words){ sort(words.begin(), words.end()); auto end_unique = unique(words.begin(), words.end()); words.erase(end_unique, words.end());}bool check_size(const string &s, string::size_type sz){ return s.size() >= sz;}void biggies(vector<string>&words, vector<string>::size_type sz){ elimDups(words); for_each(words.begin(), words.end(), [](const string &s){cout << s << " "; }); cout << endl; auto wc = partition(words.begin(), words.end(), bind(check_size, _1, sz)); auto count = wc - words.begin(); cout << count << " " << make_plural(count, "word", "s") << " of length " << sz << " or longer" << endl; for_each(words.begin(), wc, [](const string &s){cout << s << " "; }); cout << endl;}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败" << endl; exit(1); } vector<string> words; string word; while (in >> word) words.push_back(word); biggies(words, 6); system("pause"); return 0;}
10.27
#include<iostream>#include<iterator>#include<vector>#include<list>#include<algorithm>using namespace std;int main(int argc, char *argv[]){ vector<int> vi = { 1, 2, 2, 3, 4, 5, 5, 6 }; list<int> li; unique_copy(vi.begin(), vi.end(), inserter(li, li.begin())); for (auto v : li) { cout << v << " "; } cout << endl; return 0;}
10.28
#include<iostream>#include<iterator>#include<vector>#include<list>#include<algorithm>using namespace std;int main(int argc, char *argv[]){ vector<int> vi = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; list<int> li1, li2, li3; unique_copy(vi.begin(), vi.end(), inserter(li1, li1.begin())); for (auto v : li1) cout << v << " "; cout << endl; unique_copy(vi.begin(), vi.end(), back_inserter(li2)); for (auto v : li2) cout << v << " "; cout << endl; unique_copy(vi.begin(), vi.end(), front_inserter(li3)); for (auto v : li3) cout << v << " "; cout << endl; return 0;}
10.29
#include<iostream>#include<iterator>#include<vector>#include<list>#include<algorithm>#include<fstream>#include<string>using namespace std;int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } istream_iterator<string> in_iter(in); istream_iterator<string> eof; vector<string> words; while (in_iter != eof) words.push_back(*in_iter++); for (auto word : words) cout << word << " "; cout << endl; return 0;}
10.30
#include<iostream>#include<iterator>#include<vector>#include<list>#include<algorithm>#include<fstream>#include<string>using namespace std;int main(int argc, char *argv[]){ istream_iterator<int> in_iter(cin); istream_iterator<int> eof; vector<int> vi; while (in_iter != eof) vi.push_back(*in_iter++); sort(vi.begin(), vi.end()); ostream_iterator<int> out_iter(cout, " "); copy(vi.begin(), vi.end(), out_iter); return 0;}
10.31
#include<iostream>#include<iterator>#include<vector>#include<list>#include<algorithm>#include<fstream>#include<string>using namespace std;int main(int argc, char *argv[]){ istream_iterator<int> in_iter(cin); istream_iterator<int> eof; vector<int> vi; while (in_iter != eof) vi.push_back(*in_iter++); sort(vi.begin(), vi.end()); ostream_iterator<int> out_iter(cout, " "); unique_copy(vi.begin(), vi.end(), out_iter); return 0;}
10.32
#include<iostream>#include<iterator>#include<vector>#include<list>#include<algorithm>#include<fstream>#include<string>#include<numeric>#include"Sales_data.h"using namespace std;int main(){ vector<Sales_data>vs; istream_iterator<Sales_data> in_iter(cin); istream_iterator<Sales_data> eof; while (in_iter != eof) vs.push_back(*in_iter++); if (vs.empty()) { std::cerr << "No data?" << std::endl; return -1; } sort(vs.begin(), vs.end(), compareIsbn); auto l = vs.begin(); while (l != vs.end()) { auto item = *l; auto r = find_if(l + 1, vs.end(), [item](const Sales_data &item1){return item1.isbn() != item.isbn(); }); cout << accumulate(l + 1, r, item) << endl; l = r; } return 0;}
10.33
#include<iostream>#include<iterator>#include<vector>#include<list>#include<algorithm>#include<fstream>#include<string>#include<numeric>#include"Sales_data.h"using namespace std;int main(int argc, char *argv[]){ if (argc != 4) { cout << "用法:execise.exe in file "; cout<<"out_file1 out_file2" << endl; return -1; } ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } ofstream out1(argv[2]); if (!out1) { cout << "打开输出文件1失败!" << endl; exit(1); } ofstream out2(argv[3]); if (!out2) { cout << "打开输出文件2失败!" << endl; exit(1); } istream_iterator<int> in_iter(in); istream_iterator<int> eof; ostream_iterator<int> out_iter1(out1, " "); ostream_iterator<int> out_iter2(out2, "\n"); while (in_iter != eof) { if (*in_iter & 1) *out_iter1++ = *in_iter; else *out_iter2++ = *in_iter; in_iter++; } return 0;}
10.34
#include<iostream>#include<fstream>#include<vector>#include<algorithm>using namespace std;int main(int argc, char *argv[]){ if (argc != 2) { cout << "用法:execise.exe in_file" << endl; return -1; } ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败! " << endl; exit(1); } vector<int> vi; int v; while (in >> v) vi.push_back(v); for (auto r_iter = vi.crbegin(); r_iter != vi.crend();++r_iter) cout << *r_iter << " "; cout << endl; return 0;}
10.35
#include<iostream>#include<fstream>#include<vector>#include<algorithm>using namespace std;int main(int argc, char *argv[]){ if (argc != 2) { cout << "用法:execise.exe in_file" << endl; return -1; } ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败! " << endl; exit(1); } vector<int> vi; int v; while (in >> v) vi.push_back(v); for (auto r_iter = vi.cend(); r_iter != vi.begin();) cout << *(--r_iter) << " "; cout << endl; return 0;}
10.36
#include<iostream>#include<fstream>#include<vector>#include<algorithm>#include<list>using namespace std;int main(int argc, char *argv[]){ list<int> li = { 0, 1, 2, 0, 3, 4, 5, 0, 6 }; auto last_z = find(li.rbegin(), li.rend(), 0); last_z++; int p = 1; for (auto iter = li.begin(); iter != last_z.base(); iter++, p++); if (p >= li.size()) cout << "容器中没有0" << endl; else cout << "最后一个0在第" << p << "个位置" << endl; return 0;}
#include<iostream>#include<fstream>#include<vector>#include<algorithm>#include<list>using namespace std;int main(int argc, char *argv[]){ list<int> li = { 0, 1, 2, 0, 3, 4, 5, 0, 6 }; auto prev = find(li.begin(), li.end(), 0); if (prev == li.end()) cout << "容器中没有0" << endl; else { auto curr = prev; while (curr != li.end()) { prev = curr; curr++; curr = find(curr, li.end(), 0); } int p = 1; for (auto iter = li.begin(); iter != prev; iter++, p++); cout << "最后一个0在第" << p << "个位置" << endl; } return 0;}
10.37
#include<iostream>#include<fstream>#include<vector>#include<algorithm>#include<list>#include<iterator>using namespace std;int main(int argc, char *argv[]){ ostream_iterator<int> out_iter(cout, " "); vector<int> vi = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; copy(vi.begin(), vi.end(), out_iter); cout << endl; list<int> li; vector<int>::reverse_iterator re(vi.begin() + 2); vector<int>::reverse_iterator rb(vi.begin() + 7); copy(rb, re, back_inserter(li)); copy(li.begin(), li.end(), out_iter); cout << endl; return 0;}
#include<iostream>#include<fstream>#include<vector>#include<algorithm>#include<list>#include<iterator>using namespace std;int main(int argc, char *argv[]){ ostream_iterator<int> out_iter(cout, " "); vector<int> vi = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; copy(vi.begin(), vi.end(), out_iter); cout << endl; list<int> li; copy(vi.rbegin() + vi.size() - 7, vi.rbegin() + vi.size() - 3 + 1, back_inserter(li)); copy(li.begin(), li.end(), out_iter); cout << endl; return 0;}
10.42
#include<iostream>#include<fstream>#include<vector>#include<algorithm>#include<list>#include<iterator>#include<string>using namespace std;inline void output_words(list<string> &words){ for (auto iter = words.begin(); iter != words.end(); iter++) cout << *iter << " "; cout << endl;}void elimDups(list<string> &words){ output_words(words); words.sort(); output_words(words); words.unique(); output_words(words);}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败" << endl; exit(1); } list<string> words; string word; while (in >> word) words.push_back(word); elimDups(words); return 0;}
0 0
- C++Primer(第10章课后程序题源代码)
- C++Primer(第八章课后习题程序题源代码)
- C++Primer(第七章课后习题程序题源代码)
- C++Primer(第十一章课后习题程序题源代码)
- C++Primer第十二章课后习题程序题源代码
- C++Primer(第四章课后习题)(程序题源代码)
- C++Primer(第六章课后习题)(程序题源代码)
- C++Primer第三章(第五版) 课后习题 程序题 源代码
- C++Primer第九章课后习题程序题源程序
- C++Pirmer(第五章课后习题)(程序题源代码)
- c++primer第十章课后编程题
- c primer plus 第八章 课后习题程序
- C++Primer课后题11.33_单词本程序
- C++primer plus 第五版 第8章 课后编程题
- c++primer顺序容器知识点 第九章课后题
- c++primer第五版课后练习答案(第三章)
- c++primer第五版课后练习答案(第五章)
- c++primer第五版课后练习答案(第九章)
- MathJax 引擎数学符号说明
- Leetcode 234. Palindrome Linked List
- SCPPO(二十):系统统一身份认证的改造之路
- 《Android群英传》学习笔记--ADB命令技巧
- android ZLib压缩/解压缩
- C++Primer(第10章课后程序题源代码)
- iOS开发技巧:设置App icon图标及修改应用程序名
- SGU105 Div 3
- 解决win 10系统启动Genymotion 模拟器失败
- codevs 4768 跳石头(二分答案)
- Android 开发之实现公交卡扣费功能
- IOS开发中NSRunloop跟NSTimer的问题
- Socket
- Profiling Python using cProfile: a concrete case