1. 程式人生 > >C++Primer 中文版 第五版 第十章課後習題答案

C++Primer 中文版 第五版 第十章課後習題答案

//10.1
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<list>
using namespace std;
int main()
{


vector<int>a;
int t;
while(cin>>t)
{
a.push_back(t);
}
vector<int>::iterator it1=a.begin();
vector<int>::iterator it2=a.end();
int q=count(it1,it2,4);
cout<<q<<endl;
}
//10.2
#include <iostream>
#include <algorithm>
#include <list>
#include<string>
using namespace std;
int main()
{
string s;
int c;
int q=5;
list <string> lst;
while(q--)
{
cin>>s;
lst.push_back(s);
}


cin.clear();
cin.sync();
cin>>s;


if((c=count(lst.begin(),lst.end(),s))!=0)
cout<<c<<endl;






return 0;
}


//10.3
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<numeric>
#include<list>
using namespace std;
int main()
{


vector<int>a;
int t;
while(cin>>t)
{
a.push_back(t);
}
vector<int>::iterator it1=a.begin();
vector<int>::iterator it2=a.end();
int q=accumulate(it1,it2,0);
cout<<q<<endl;
}
//10.4
0應該寫成0.0
//10.5
應該寫成const char*
//10.6
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<numeric>
#include<list>
using namespace std;
int main()
{


vector<int>a;
int t;
while(cin>>t)
{
a.push_back(t);
}
fill_n(a.begin(),a.size(),0);
    vector<int>::iterator it1=a.begin();
    vector<int>::iterator it2=a.end();
while(it1!=it2)
{
cout<<*it1<<endl;
++it1;
}
}
//10.7
vec是空的
雖然準備了10歌空間,但是沒有用到
//10.8
這個不是演算法啊......
//10.9
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<numeric>
#include<list>
using namespace std;
void elimDups(vector<string>&word)
{
sort(word.begin(),word.end());
vector<string>::iterator it3=unique(word.begin(),word.end());
word.erase(it3,word.end());
}
int main()
{


vector<string>a;
int n=5;
string t;
while(n--)
{
cin>>t;
a.push_back(t);
}
elimDups(a);
vector<string>::iterator it1=a.begin();
vector<string>::iterator it2=a.end();
while(it1!=it2)
{
cout<<*it1<<endl;
++it1;
}
}
//10.10
因為演算法不改變容器
//10.11
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<numeric>
#include<list>
using namespace std;
bool isShorter(string &s1,string &s2)
{
return s1.size()<s2.size();
}




int main()
{


vector<string>a;
int n=5;
string t;
while(n--)
{
cin>>t;
a.push_back(t);
}
vector<string>::iterator it1=a.begin();
vector<string>::iterator it2=a.end();
sort(a.begin(),a.end(),isShorter);
while(it1!=it2)
{
cout<<*it1<<endl;
++it1;
}
}
//10.12

但是注意,不要忘記過載=號,因為我們需要比較大小
//10.13
#include <iostream>
#include <vector>
#include <iterator>
#include<string>
#include <algorithm>
using namespace std;


bool compare(const string & cstr)
{
if (cstr.size()!=0)
return cstr.size()>=5?true:false;
else
throw -1;
}


int main()
{
string word;
vector<string> vwords;
int qq=10;
while(qq--)
{
cin>>word;
vwords.push_back(word);
}
if(!vwords.empty())
{
vector<string>::iterator iter=partition(vwords.begin(),vwords.end(),compare);
vector<string>::iterator ibegin=vwords.begin();
while(ibegin!=iter)
cout<<*ibegin++<<' ';
cout<<endl;
}
else
cout<<"no inputs!"<<endl;


return 0;
}
//10.14
auto f = [](int a, int b){return a + b;};  
    cout << f(5, 6) << endl;
//10.15
int p=10;
auto  f[p](int a){return a+p;}
cout<<f(6)<<endl;
//10.16


//10.17
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
class sales_data
{


public:
sales_data()=default;
sales_data(const string & s, unsigned i, double d):bookNo(s),units_sold(i),revenue(d){}
string isbn() const {return this->bookNo;}
void prints() const {cout<<bookNo<<' '<<units_sold<<' '<<revenue<<endl;}


private:
string bookNo;
unsigned units_sold=0;
double revenue=0.0;


};


int main()
{
vector<sales_data> vecSales;
sales_data vec1("002",2,22),vec2{"22",33,43},vec3{"22312",2,12};
vecSales.push_back(vec1);
vecSales.push_back(vec2);
vecSales.push_back(vec3);


for(auto &i :vecSales)
i.prints();


sort(vecSales.begin(),vecSales.end(),[=](sales_data & s1,sales_data & s2){return s1.isbn().size()<s2.isbn().size();});
for(auto &i :vecSales)
i.prints();






return 0;
}
//10.18
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
void elimDups(vector<string> & words)
{
sort(words.begin(),words.end());
auto end_unique=unique(words.begin(),words.end());
words.erase(end_unique,words.end());
}
void biggies( vector <string > & words, vector < string > ::size_type sz)
{
elimDups(words);
stable_sort(words.begin(),words.end(),[](const string & s1, const string & s2){return s1.size()<s2.size();});
auto wc=partition(words.begin(),words.end(),[sz](const string & s){return s.size()<sz;});
auto count=words.end()-wc;
cout<<"大於"<<sz<<"的單詞有這麼多個:"<<count<<endl;
for_each(wc,words.end(),[](const string & s){cout<<s<<' ';});
cout<<endl;
}




int main()
{
string word;
vector<string> vwords;
while(cin>>word)
{
vwords.push_back(word);
}
if(!vwords.empty())
{
biggies(vwords,4);
}
else
cout<<"no inputs!"<<endl;


return 0;
}
//10.19
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
void elimDups(vector<string> & words)
{
sort(words.begin(),words.end());
auto end_unique=unique(words.begin(),words.end());
words.erase(end_unique,words.end());
}
void biggies( vector <string > & words, vector < string > ::size_type sz)
{
elimDups(words);
stable_sort(words.begin(),words.end(),[](const string & s1, const string & s2){return s1.size()<s2.size();});
auto wc=stable_partition(words.begin(),words.end(),[sz](const string & s){return s.size()<sz;});
auto count=words.end()-wc;
cout<<"大於"<<sz<<"的單詞有這麼多個:"<<count<<endl;
for_each(wc,words.end(),[](const string & s){cout<<s<<' ';});
cout<<endl;
}




int main()
{
string word;
vector<string> vwords;
while(cin>>word)
{
vwords.push_back(word);
}
if(!vwords.empty())
{
biggies(vwords,4);
}
else
cout<<"no inputs!"<<endl;


return 0;
}
//10.20
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
int main()
{
vector<string>vec{"asdsadsa","xcc","eda","xzcxvccb","edd"};
int ans=count_if(vec.begin(),vec.end(),[](string s){return s.size()>=5});
cout<<ans<<endl;
}


//10.21
 int index = 7;  
    auto check_and_decrement = [&index]() { return -- index ? false : true;};  
    while(!check_and_decrement())  
        cout << index << " ";  
    cout << index << endl
//10.22
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
bool hanshu(string &s)
{
if(s.size()>=6)
return true;
return false;
}
int main()
{
vector<string>vec;
string uu;
int q=10;
while(q--)
{
cin>>uu;
vec.push_back(uu);
}
int ans=count_if(vec.begin(),vec.end(),hanshu);
cout<<ans<<endl;
}
//10.23
不清楚- -
10.24
10.25
以後再做


//10.26
位置不同
//10.27
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
void shuchu(int a)
{
cout<<a<<" ";
}
int main()
{
vector<int>vec;
int uu;
int q=10;
while(q--)
{
cin>>uu;
vec.push_back(uu);
}
list<int>bb;
unique_copy(vec.begin(),vec.end(),back_inserter(bb));
for_each(bb.begin(),bb.end(),shuchu);


}
//1028


#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
void shuchu(int a)
{
cout<<a<<" ";
}
int main()
{
vector<int>vec;
int uu;
int q=10;
while(q--)
{
cin>>uu;
vec.push_back(uu);
}


    list<int>aa;
list<int>bb;
list<int>cc;
   unique_copy(vec.begin(),vec.end(),back_inserter(bb));
   unique_copy(vec.begin(),vec.end(),front_inserter(aa));
for_each(aa.begin(),aa.end(),shuchu);
for_each(bb.begin(),bb.end(),shuchu);






}
//10.29
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
int main()
{
ifstream in("test.txt");
    istream_iterator<string> in_it(in);
istream_iterator<string> in_eof;
vector<string>vec;
copy(in_it,in_eof,back_inserter(vec));
copy(vec.begin(),vec.end(),ostream_iterator<string>(cout,"  "));
}
//10.30
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
int main()
{


    istream_iterator<int> in_it(cin);
istream_iterator<int> eof;
vector<int> vec;
while(in_it!=eof)
{
vec.push_back(*in_it++);
}
sort(vec.begin(),vec.end());
copy(vec.begin(),vec.end(),ostream_iterator<int>(cout,"  "));
}
//10.31
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
int main()
{


    istream_iterator<int> in_it(cin);
istream_iterator<int> eof;
vector<int> vec;
while(in_it!=eof)
{
vec.push_back(*in_it++);
}
sort(vec.begin(),vec.end());
unique_copy(vec.begin(),vec.end(),ostream_iterator<int>(cout,"  "));
}
下面這倆設計檔案的沒做
//10.32

//10.33

//10.34
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
int main()
{


   
    vector<int>aa;


int q=5;
while(q--)
{
int t;
cin>>t;
aa.push_back(t);
}
vector<int>::reverse_iterator it1=aa.rbegin();
vector<int>::reverse_iterator it2=aa.rend();
    while(it1!=it2)
{
cout<<*it1<<endl;
++it1;
}
}
//10.35
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
int main()
{


   
    vector<int>aa;


int q=5;
while(q--)
{
int t;
cin>>t;
aa.push_back(t);
}
vector<int>::iterator it1=aa.begin();
vector<int>::iterator it2=aa.end();
--it2;
    while(it1!=it2)
{
cout<<*it2<<endl;
--it2;
}
cout<<*it2<<endl;
}


//10.36
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
int main()
{


   
    list<int>aa;


int q=10;
while(q--)
{
int t;
cin>>t;
aa.push_back(t);
}
list<int>::reverse_iterator it1=aa.rbegin();
list<int>::reverse_iterator it2=aa.rend();
 
cout<<*find(it1,it2,0)<<endl;
}


//10.37
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
#include<list>
using namespace std;
int main()
{


   int q=10;
    vector<int>a;
list<int>b;
while(q--)
{
int t;
cin>>t;
a.push_back(t);
}
copy(a.begin(),a.end(),front_inserter(b));
copy(b.begin(),b.end(),ostream_iterator<int>(cout,"  "));
}


//10.38,39,40,41

//10.42
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<numeric>
#include<list>
using namespace std;


void elimDups(list<string>&word)
{
word.sort();
list<string>::iterator it3=unique(word.begin(),word.end());
word.erase(it3,word.end());
}


int main()
{


list<string>a;
int n=5;
string t;
while(n--)
{
cin>>t;
a.push_back(t);
}
elimDups(a);
list<string>::iterator it1=a.begin();
list<string>::iterator it2=a.end();
while(it1!=it2)
{
cout<<*it1<<endl;
++it1;
}
}

相關推薦

Java語言程序設計()第二課後習題答案(僅供參考)

[] main 是否 支付 都去 port span 時區 div 2.1 註意不同類型轉換 1 import java.util.Scanner; 2 3 public class Ch02 { 4 public static void main

C++Primer 中文版 課後習題答案

//10.1 #include<iostream> #include<algorithm> #include<string> #include<vector> #include<list> using namesp

c++ primer)學習筆記及習題答案程式碼(第一

筆記較為零散,都是自己不熟悉的知識點。 習題答案至於一個.cc中,需要執行某一題直接修改#define NUM**, 如執行第一題為#define NUM11,題1.24定義為NUM124chapter 1 1、std::cout << "Entertwo nu

C++Primer 習題答案(1~10)

1:這個比較簡單,類比下 find() 函式也就知道了。 #include<iostream> #include<algorithm> #include<vector> using namespace std; void main() {

c++ primer答案

15.01 什麼是虛成員? 虛成員是基類希望派生類進行覆蓋的函式,在其成員前加關鍵字virtual,使得該成員可以實現動態繫結。 15.02 protected訪問說明符與private有何區別? private成員:即使是基類的派生類也無法直接訪問。 protected成員:基類的

C++Primer 習題答案(1~10)

1:知識點1:物件生命週期:全域性物件在程式啟動時分配,在程式結束時銷燬。區域性自動物件,當我們進入其定義所在程式塊時被建立,在離開塊時被銷燬。區域性static物件在第一次使用前分配,在程式結束時銷

C++ Primer中文版)--第二 變數和基本型別

   資料型別是程式的基礎,它告訴我們資料的意義以及我們能在資料上執行的操作      C++定義了幾種基本內建型別:字元、整型、浮點數等,同時程式設計師可以自定義資料型別,另外C++ 標準庫還定義了一些更加複雜的資料型別,如可變長字串和向量。 2.1 基本內建型別

C++ primer 練習答案

第15章 面向物件程式設計 15.3 #include <iostream> #include <string> using namespace std; class Quote { public: Quote() =

C++ Primer() :順序容器

賦值運算 prime 練習 erase 內部 判斷 相同 編譯 中間 練習9.1:考察使用哪種順序容器 (a)list,當需要在容器中任意位置執行插入/刪除操作時,用list最好 (b)deque,當需要在頭部插入/刪除元素,不需要在容器中間任意位置插入/刪除元素時,用de

C++ Primer() :IO庫

cor 三種 cer record info pre hide std 2-0 練習8.1:考察如何管理流的狀態 1 istream& func(istream& is) 2 { 3 string buf; 4 while ( is>

C++ Primer 習題答案

書籍版本:2019年9月第一版;王剛 楊巨峰譯;電子工業出版社 編譯器 : win10  && VS2015 6.1 形參是定義在函式中的虛擬值,實參是形參的初始值。 6.2 a.  返回值是int型別,不能return

C++Primer1Sales_item.h原始碼

/* * This file contains code from "C++ Primer, Fifth Edition", by Stanley B. * Lippman, Josee Lajoie, and Barbara E. Moo, and is covered u

C++Primer 習題答案(31~40)

31:知識點1:容器的改變可能會使迭代器失效,插入和刪除各有其相關的規則,P315. 知識點2:必須保證每次改變容器的操作之後都正確的重新定位迭代器的操作 知識點3:呼叫erase()之後,其返回的迭代器指向的是序列中的下一個元素,其返回的迭代器可以用來更新 知識點4:

C++Primer 習題答案(41~50)

41:  #include<iostream> #include<string> #include<vector> using namespace std; void main() { vector<char> c{ 'a'

C++ Primer 7程式設計練習節選(函式指標陣列)

問題描述:設計一個函式指標用於完成兩個數字(x, y)的"平均值"計算,並驗證:調和平均數<=幾何平均數<=算術平均數<=平方平均數,當且僅當x = y 是等號成立。 要求:1,(x, y)可從控制檯連續輸入;            2,函式指標原型 d

C++ Primer 程式設計練習節選(函式過載與模板函式)

#include<iostream> #include<cstring> using namespace std; const int Arsize = 40; struct st { char ch[Arsize]; int

C++ Primer 習題答案

書籍版本:2019年9月第一版;王剛 楊巨峰譯;電子工業出版社 編譯器 : win10  && VS2015 5.1 空語句是隻含一個分號的語句,表示當前什麼也不做。 在程式的某個地方,語法上需要一條語句但是邏輯上不需要,此時應該使用空語句。 5.2

C++ Primer 習題答案(下)

書籍版本:2019年9月第一版;王剛 楊巨峰譯;電子工業出版社 編譯器 : win10  && VS2015 這一篇從6.3節開始,也就是30題開始 6.30 報的是錯誤#1,沒有正確的返回值 6.31 返回區域性引用時無效,返回區域性定義的常量引

C++ Primer 習題答案

書籍版本:2019年9月第一版;王剛 楊巨峰譯;電子工業出版社 編譯器 : win10  && VS2015 3.1 對之前的練習用using來宣告,其餘與之前一致。 3.2 #include "stdafx.h" #include <ios

C++Primer 十三習題答案(41~50)

41:就是前置先加後用,後置先用後加,first_free指向的是一個空位置,前置的話會跳過一個空位置。 42:本章所實現的StrVec類屬於簡化版本的容器類,只適用於string,執行時可動態分配