《C++STL-數(shù)據(jù)結(jié)構(gòu)與算法實(shí)現(xiàn)》課件第十章_第1頁
《C++STL-數(shù)據(jù)結(jié)構(gòu)與算法實(shí)現(xiàn)》課件第十章_第2頁
《C++STL-數(shù)據(jù)結(jié)構(gòu)與算法實(shí)現(xiàn)》課件第十章_第3頁
《C++STL-數(shù)據(jù)結(jié)構(gòu)與算法實(shí)現(xiàn)》課件第十章_第4頁
《C++STL-數(shù)據(jù)結(jié)構(gòu)與算法實(shí)現(xiàn)》課件第十章_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第十章課后習(xí)題參考答案概念理解題C++STL數(shù)值算法定義在頭文件<numeric>中,主要包括遞增填充算法iota、累加和算法accumulate、序列和算法partial_sum、內(nèi)積算法inner_product和計(jì)算相鄰差算法adjacent_difference五個(gè)算法。C++STL預(yù)定義的函數(shù)對(duì)象都位于頭文件<functional>中,以類模板形式提供。數(shù)值數(shù)組類重載了各種數(shù)學(xué)函數(shù),并對(duì)數(shù)值運(yùn)算做了多方面的優(yōu)化,因此以方面方便了數(shù)值計(jì)算,另一方面也提高了運(yùn)算效率。函數(shù)對(duì)象指那些重載了運(yùn)算符()的模板類所實(shí)例化的對(duì)象。函數(shù)對(duì)象在使用時(shí),可以像普通函數(shù)那樣調(diào)用,可以有參數(shù),可以有返回值。并且函數(shù)對(duì)象可以作為參數(shù)傳遞。函數(shù)對(duì)象(仿函數(shù))是一個(gè)類,不是一個(gè)函數(shù)。返回bool類型的仿函數(shù)稱為謂詞。比較函數(shù)的參數(shù)個(gè)數(shù)大于一,而謂詞的參數(shù)個(gè)數(shù)可以為一。上機(jī)練習(xí)題(答案不唯一,供參考)2.二維數(shù)組和各行列求和:

include

<iostream>

using

namespace

std;

int

main()

{

int

i,j,a[4][6],sum,m,n;

cin>>m>>n;

for(i=0;i<m;i++)

{

for(j=0;j<n;j++)

{

cin>>a[i][j];

}

}

//二維數(shù)組各行求和

for(i=0;i<m;i++)

{

sum=0;

for(j=0;j<n;j++)

{

sum+=a[i][j];

}

cout<<"第"<<i<<"行和

"<<sum<<endl;

}

//二維數(shù)組各列求和

for(i=0;i<n;i++)

{

sum=0;

for(j=0;j<m;j++)

{

sum+=a[j][i];

}

cout<<"第"<<i<<"列和

"<<sum<<endl;

}

return

0;

}4.#

include<iostream>

#

include

<string>

#

include

<deque>

#

include

<functional>

#

include

<algorithm>

#

include<iterator>

using

namespace

std;

class

mybigdata

{

deque<int>

v;//用deque容器表示大整數(shù)

public:

mybigdata()

{}

mybigdata(string

strnum)//通過字符串建立大整數(shù)

{

copy(strnum.begin(),strnum.end(),

back_inserter(v));

transform(v.begin(),v.end(),v.begin(),bind2nd(minus<int>(),

'0'));//字符‘1’變成1要減去‘0’

}

deque<int>::iterator

begin()//開始迭代指針

{

return

v.begin();

}

deque<int>::iterator

end()//迭代止指針

{

return

v.end();

}

int

size()//容器大小

{

return

v.size();

}

back_insert_iterator<deque<int>

>Back_Inserter()

{

return

back_inserter(v);

}

void

push_front(int

n)//前插入元素

{

v.push_front(n);

}

void

push_back(int

n)//后插入元素

{

v.push_back(n);

}

void

adjust()//調(diào)整使容器的每位整型元素值都小于10

{

int

nsize

=

v.size();

for

(int

i

=

nsize

-

1;

i

>=

1;

--i)

{

int

value

=

v[i];

if

(value

<

10)

continue;

v[i]

=

value

%

10;

v[i

-

1]

+=

value/10;

}

int

value

=

v[0];//處理最高位

if

(value

>=

10)

{

v[0]

=

value

%

10;

value

=

value

/

10;

while

(value

>

0)

{

v.push_front(value

%

10);

value

/=

10;

}

}

nsize

=

v.size();

}

mybigdata

add(mybigdata&m)

{

mybigdata

result;

int

n

=

size()

-

m.size();

if

(n

>=

0)//大于等于加數(shù)位數(shù)

{

transform(begin()

+

n,

end(),

m.begin(),

result.Back_Inserter(),

plus<int>());

for

(int

i

=

n

-

1;

i

>=

0;

i--)

{

result.push_front(*(begin()+i));

}

}

else

{

//小于加數(shù)位數(shù)

transform(begin()

+

n,

end(),

m.begin()-n,

result.Back_Inserter(),

plus<int>());

for

(int

i

=

-n

-

1;

i

>=

0;

i--)

{

result.push_front(*(begin()

+

i));

}

}

result.adjust();//結(jié)果調(diào)整

return

result;

}

mybigdata

mutiply(mybigdata

&m)

{

mybigdata

result("0");

mybigdata

mid;

for

(int

i

=

0;

i

<

m.size();

i++)

{

mid

=

*this;

for

(int

j

=

0;

j

<

i;

j++)//加0相等于擴(kuò)大十倍

{

mid.push_back(0);

}

transform(mid.begin(),mid.end(),mid.begin(),bind2nd(multiplies<int>(),*(m.begin()+i)));//被乘數(shù)分別乘以每一位乘數(shù)

result

=

mid.add(result);//分項(xiàng)之和累加

}

return

result;

}

};

int

main()

{

mybigdata

m1("1234567890");

mybigdata

m2("9999999998");

mybigdata

result

=

m1.add(m2);

cout

<<

"1234567890+9999999998

=

";

copy(result.begin(),result.end(),ostream_iterator<int>

(cout));

cout

<<

endl;

mybigdata

m3("999")

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論