|
Разработка библиотечных средств
IAUAEO ENNEAAIAAIE?: eeanniaua oeiu – ?eneaiiay eaaa?aoiay
iao?eoa e iaiiia?iue aeiaie?aneee iannea n ia?aiaiiuie ?acia?aie. A eo?niaii i?iaeoa ?ac?aaioaiu aeai?eoiu aey ?aoaiey iniiaiuo caaa?
eeiaeiie aeaaa?u. Ii yoei aeai?eoiai ia ycuea Borland C++ iaienaiu aaa eeanna
ooieoee, i?eaioe?iaaiiuo ia iauaeou oeia ?eneaiiay eaaa?aoiay iao?eoa e
iaiiia?iue iannea (aaeoi?). A eeannu aee??aiu a?eoiaoe?aneea iia?aoee, iia?aoee
aaiaa-auaiaa, ooieoee au?eneaiey ii?aaaeeoaey iao?eou, aeeiu aaeoi?a, a oae?a
?aoaiey nenoaiu eeiaeiuo aeaaa?ae?aneeo o?aaiaiee. Aey iaaeyaiinoe iieo?aiiuo
?acoeuoaoia ?ac?aaioaia aaiiino?aoeiiii-oanoe?o?uay i?ia?aiia. ?acoeuoaou
eo?niaiai i?iaeoa iiaoo auou eniieuciaaiu ia i?aeoeea aey ?aoaiey nenoai
eeiaeiuo o?aaiaiee e a?oaeo caaa? eeiaeiie aeaaa?u. Iauaeoii-
i?eaioe?iaaiiia i?ia?aiie?iaaiea – yoi iiaue niinia iiaoiaa e i?ia?aiie?iaaie?.
Oaeia i?ia?aiie?iaaiea, acya eo?oea ?a?ou no?oeoo?iiai i?ia?aiie?iaaiey,
aiiieiyao aai iiauie eaayie, eioi?ua ia?aaiayo a iiaia ea?anoai iiaoia e
nicaaie? i?ia?aii. Iaeaieaa aa?iia iiiyoea ycueia iauaeoii-i?eaioe?iaaiiiai
i?ia?aiie?iaaiey – yoi iiiyoea iauaeoa (object). Iauaeo – yoi eiae?aneay
aaeieoa, eioi?ay niaa??eo aaiiua e i?aaeea (iaoiau) ia?aaioee yoeo aaiiuo. A
ycuea N++ a ea?anoaa oaeeo i?aaee ia?aaioee aunooia?o ooieoee, o. a. iauaeo a
Borland C++ iauaaeiyao a naaa aaiiua e ooieoee, ia?aaaouaa?uea yoe
aaiiua. Iaiei ec naiuo aeaaiuo iiiyoee ycuea N++ yaeyaony iiiyoea eeanna
(class). A ycuea N++ aey oiai, ?oiau ii?aaaeeou iauaeo, iaai nia?aea ii?aaaeeou
aai oi?io n iiiiuu? ee??aaiai neiaa class [1]. Aee?aeoae aiaeiaeae eeanna
yaeyaony no?oeoo?a. Iaiyou auaaeyaony iauaeoo oieuei oiaaa, eiaaa eeann
eniieucoaony aey aai nicaaiey. Yoio i?ioann iacuaaaony nicaaieai yecaiiey?a
eeanna (class instance). E?aie iauaeo ycuea N++ eiaao iaeiaeiaua ao?eaoou e
ooieoeiiaeuiinou n a?oaeie iauaeoaie oiai ?a eeanna. Ca nicaaiea naieo eeannia e
iiaaaaiea iauaeoia yoeo eeannia iieio? ioaaonoaaiiinou ianao nai i?ia?aiieno.
?aaioay a iaeioi?ie n?aaa, i?ia?aiieno iieo?aao ainooi e iaoe?iui aeaeeioaeai
noaiaa?oiuo eeannia. Iau?ii, iauaeo iaoiaeony a iaeioi?ii oieeaeuiii
ninoiyiee, ii?aaaeyaiii oaeoueie cia?aieyie aai ao?eaooia. Ooieoeiiaeuiinou
iauaeoiiai eeanna ii?aaaeyaony aicii?iuie iia?aoeyie iaa yecaiiey?ii yoiai
eeanna. Oaaeiiu, eee ia?aiao?eciaaiiua oeiu, iicaiey?o eiino?oe?iaaou
naiaenoai naycaiiuo ooieoee eee eeannia. Iaiauaiiue neioaenen ii?aaaeaiey
oaaeiia eiaao aea Oaaeii eeannia caaaao ia?acao
ii?aaaeaiee naiaenoaa eeannia. Iaa oeiece?iaaiiuie yeaiaioaie yoiai eeanna
auiieiy?ony iaeiaeiaua aaciaua iia?aoee aia caaeneiinoe io eiie?aoiiai oeia
yeaiaioia [2]. Iauaeoii-i?eaioe?iaaiiia i?ia?aiie?iaaiea i?aanoaaeyao
niaie ?oou aieaa aaoiiaoece?iaaiiue niinia i?ia?aiie?iaaiey. Iauaeoii-
i?eaioe?iaaiiua i?ia?aiiu – yoi ia i?inoi i?ioaao?iua i?ia?aiiu, ia?aaaaaiiua ia
iiaue neioaenen. Iie aie?iu no?ieony ia iiaie oeeinioee ?ac?aaioee. Aey ieo
o?aaoaony iiaay no?aoaaey i?ia?aiie?iaaiey, eioi?o? ?anoi auaaao o?oaii inaieou
[3]. Iniiaiay eaay III: i?ia?aiia ninoieo ec a?oiiu iauaeoia, ?anoi naycaiiuo
ia?ao niaie. A N++ iauaeou iienuaa?ony i?e iiiiue iiaiai oeia aaiiuo class.
Eeann aee??aao a naay iaai? ia?aiaiiuo (aaiiuo) e iia?aoee (iaoiaia eee ooieoee-
?eaiia), eioi?ua aaenoao?o ia yoe ia?aiaiiua. Iieo?aiiuie iauaeoaie ii?ii
oi?aaeyou i?e iiiiue niiauaiee. A III iauaeou aee??a?o a naay ia oieuei aaiiua
(aaiiua-?eaiu), ii e iaoiau (ooieoee-?eaiu) aicaaenoaey ia yoe aaiiua. Yoe aaa
?anoe a ni?aoaiee ia?aco?o ooieoeiiaeuio? aaeieoo i?ia?aiiu. A?oaeie neiaaie,
iauaeou niaa??ao aaiiua e iaoiau ?aaiou n yoeie aaiiuie. Ie?a i?eaaaaiu o?e
iniiaiuo i?aeiouanoaa iauaeoii-i?eaioe?iaaiiuo i?ia?aii ii n?aaiaie? n
yeaeaaeaioiuie i?ia?aiiaie, ?ac?aaioaiiuie naa?oo aiec. I?ia?aiiu i?iua ?eoaou e iiieiaou, III iicaieyao oi?aaeyou
nei?iinou? i?ia?aiiu, inoaaeyy aeaeiuie i?ia?aiienoo oieuei nouanoaaiiua
aaoaee. Au ii?aoa ?anoi aaeaou aiiieiaiey eee enee??aiey a i?ia?aiia, iai?eia? i?e
?aaioa n aacie aaiiuo, i?inoi aiaaaeyy e enee??ay iauaeou. Iiaua iauaeou iiaoo
ianeaaiaaou ana naienoaa aaciauo iauaeoia, iaiaoiaeii oieuei aiaaaeou eee oa?aou
ioee?a?ueany naienoaa. Ii?ii nio?aieou
a?aiioii ?ac?aaioaiiue iauaeo a iaai?a iieaciuo i?ia?aii e caoai anoaaeou aai a
iiao? i?ia?aiio n iaaieuoeie eciaiaieyie eee aac eciaiaiee. III
iieiinou? i?eiaaea?eo e ie?o N++, iineieueo a N iao iniiaiiai ya?a –
aano?aeoiiai oeia aaiiuo class [5]. Iiyoiio ia?aienaou i?ioaao?ii-
i?eaioe?iaaiio? i?ia?aiio eae iauaeoii-i?eaioe?iaaiio? ai?acai nei?iaa, ?ai
i?inoi iianoaaeou aianoi iaiiai ee??aaiai neiaa a?oaia. III i?aanoaaeyao niaie
oaoieeo i?ia?aiie?iaaiey, eioi?ay iicaieyao ?anniao?eaaou iniiaiua eaae eae
iii?anoai iauaeoia. Eniieucoy iauaeou, ii?ii i?aanoaaeou caaa?e, eioi?ua
iaiaoiaeii auiieieou, eo acaeiiaaenoaea e e?aua caaaiiua oneiaey, eioi?ua aie?iu
auou niae?aaiu. No?oeoo?a aaiiuo ?anoi ia?acoao iniiau iauaeoia; oaeei ia?acii a
N eee N++ oei struct ii?ao ia?aciauaaou yeaiaioa?iue iauaeo. Naycu n iauaeoii
ii?ii i?aaieciaaou i?e iiiiue niiauaiee. Eniieuciaaiea niiauaiee iioi?a ia aucia
ooieoee a i?ioaao?ii-i?eaioe?iaaiiie i?ia?aiia. Eiaaa iauaeo iieo?aao niiauaiea,
anooia?o a aaenoaea iaoiau, niaa??aueany a iauaeoa. ) aiaeiae?iu ooieoeyi i?ioaao?ii-
i?eaioe?iaaiiiai i?ia?aiie?iaaiey. Oai ia iaiaa iaoia yaeyaony ?anou? iauaeoa, a
ia ?ai-oi ioaaeuiui, eae auei au a i?ioaao?iii aiaeiaa. Yoio oa?iei aee??aao a naay
eiae?aneia naycuaaiea aaiiuo n eiie?aoiie iia?aoeae. Iia oae ?a icia?aao, ?oi
iie yaey?ony ia -aeiaaeuiuie ainooiiuie anae i?ia?aiia, a eieaeuiuie –
ainooiiuie oieuei iaeie aa ?anoe. Eieainoeyoey oae?a aaoiiaoe?anee iia?acoiaaaao
caueoo aaiiuo. Eiaiii aey yoiai i?aaiacia?aia no?oeoo?a class a N++. A eeanna
oi?aaeaiea ooieoeiiaeuiuie aaoaeyie iauaeoa inouanoaeyaony i?e iiiiue
niaoeoeeaoi?ia private, public, protected. A iauai
neo?aa ii?ii i?aanoaaeou naaa ea?a?oe? eeannia eae ?iaineiaio? a aaiaaeiae?aneii
a?aaa, aaa eeann N++ i?aanoaaeyao niaie oaaeii aey nicaaiey eeannia-iioiieia.
Iauaeou, iieo?aiiua ec iienaiey eeanna, iacuaa?o yecaiiey?aie yoiai eeanna.
Ii?ii nicaaou ea?a?oe? eeannia n eeannii-?iaeoaeai e ianeieueeie eeannaie-
iioiieaie. Iniiaie aey yoiai yaey?ony i?iecaiaiua
eeannu. Ianeaaiaaiea a III iicaieyao eeanno iieo?aou
niaenoaa a?oaiai eeanna iauaeoia. ?iaeoaeuneee eeann neo?eo oaaeiiii aey
i?iecaiaiiai eeanna; yoio oaaeii ii?ii iaiyou ?acee?iuie niiniaaie. Ianeaaiaaiea
yaeyaony aa?iui iiei?aieai, iineieueo iii iicaieyao iiaoi?ii eniieuciaaou
ii?aaaeaiea eeanna aac cia?eoaeuiuo eciaiaiee a
eiaa. No?ieony ia iienaiie auoa eiioaioee ianeaaiaaiey.
I?ia?aiia iinueaao iaii e oi?a niiauaiea eae iauaeoo ?iaeoaeuneiai eeanna, oae e
anai iauaeoai i?iecaiaiuo eeannia. E ?iaeoaeuneee eeann, e eeannu-iioiiee
ioaaoyo ia niiauaiea niioaaonoao?uei ia?acii. Iieeii?oeci aaao aicii?iinou
aiiieiyou o?a nouanoao?uea ?anoe i?ia?aiiu. Ae?ooaeuiua ooieoee ii?aaaey?ony a ?iaeoaeuneii eeanna, a a
i?iecaiaiuo eeannao i?ienoiaeo aiii?aaaeaiea yoeo ooieoee e aey ieo nicaa?ony
iiaua ?aaeecaoee. I?e ?aaioa n ae?ooaeuiuie ooieoeyie niiauaiey ia?aaa?ony eae
oeacaoaee, eioi?ua oeacuaa?o ia iauaeo aianoi i?yiie ia?aaa?e iauaeoo.
Ae?ooaeuiua ooieoee eniieuco?o oaaeeoo aey aa?aniie eioi?iaoee. Yoa oaaeeoa
eieoeaeece?oaony ai a?aiy auiieiaiey i?e iiiiue eiino?oeoi?a. Eiino?oeoi?
aucuaaaony ea?aue ?ac, eiaaa nicaaaony iauaeo aai eeanna. Caaa?a eiino?oeoi?a a
aaiiii neo?aa ninoieo a naycuaaiee ae?ooaeuiie ooieoee n oaaeeoae aa?aniie
eioi?iaoee. Ai a?aiy eiiieeyoee aa?an ae?ooaeuiie ooieoee iaecaanoai; aianoi
yoiai ae ioaiaeony iiceoey a oaaeeoa aa?ania. Yoa iiceoey aoaao niaa??aou aa?an
ooieoee [5]. Ionou eiaai eaaa?aoio? iao?eoo ?acia?ii n .
(2.1.1) Yeaeaaeaioiui
i?aia?aciaaieai iao?eou iacuaa?o i?aia?aciaaiey iao?eou, ia eciaiy?uea aaee?eio
ii?aaaeeoaey iao?eou. Yeaeaaeaioiui yaeyaony neaao?uaa i?aia?aciaaiea: e?ao?
no?ieo iao?eou ii?ii caia-ieou noiiie enoiaiie no?iee e e?aie a?oaie, oiii?aiiie
ia e?aia ?enei, ia ?aaiia ioe?. i?e
yoii det(A) = det(A aaai- iiia? noieaoa, a eioi?ii yeaiaiou, ea?auea ie?a aeaaiie k- iiia? yeaiaioa a oaeouae no?iea. -
aiaoiee oeee, i = 1 .. n-1 ; Oaia?u eneiiue ii?aaaeeoaeu au?eneyaony eae i?iecaaaaiea
aeaaiiaeuiuo yeaiaioia:
Iienaiiue auoa aeai?eoi aaao ?acoeuoao ia anaaaa. Anee i?e auiieiaiee i-oiai
oaaa aiaoiaai oeeea aeaaiiaeuiue yeaiaio a ieacuaaaony ?aaiui ioe?,
a n?aae yeaiaioia i-oiai noieaoa n iiia?aie io i+1 ai n anou oioy au iaei ia
ioeaaie, aeai?eoi caaa?oaaony aac?acoeuoaoii (ec-ca iaaicii?iinoe au?eneaiee ii
oi?ioea (2.1.2). Aey oiai, ?oiau yoi ia i?ienoiaeei, eniieucoaony i?eai, eioi?ue
iacuaaaony "auai? aeaaiiai yeaiaioa". 1) iaoiaeony iaeneiaeuiue
ii iiaoe? yeaiaio n?aae yeaiaioia i-oiai noieaoa io a ?aaai ioe?, i?ioann
au?eneaiey caaa?oaaony n auaa?ae ?acoeuoaoa det(A) = 0 ; Iinea caaa?oaiey i?aia?aciaaiey iao?eou, ii?aaaeeoaeu
au?eneyaony ii oi?ioea: aaa
p – ?enei auiieiaiiuo iia?aoee ia?aiaiu no?ie ianoaie. , iaeaaa?uay naienoaii: aaa I –
aaeie?iay aeaaiiaeuiay iao?eoa. Iieoai iaei ec oieaa?naeuiuo e yooaeoeaiuo
iaoiaia ?an?aoa ia?aoiie iao?eou (iaoia ?i?aaia-Aaonna, a eieaa [4-218] iienai
eae "iaoia enee??aiee"). A [5-22] i?eaaaai aieaa yooaeoeaiue ii iaiyoe aeai?eoi
ia?auaiey iao?eou. Ionou eiaai iao?eoo A aeaa (2.1.1) e ionou B – aaeie?iay
aeaaiiaeuiay iao?eoa oaeiai ?a ?acia?a. Nicaaaei ?aai?o? iao?eoo R ?acia?ii
N Iaa no?ieaie oaeie ?anoe?aiiie iao?eou aoaai i?iecaiaeou
i?aia?aciaaiey, aiaeiae?iua oai, eioi?ua auee iienaiu a i.2.1. Eaao? ?anou
iao?eou R aoaai iacuaaou iiaiao?eoae A, i?aao? – iiaiao?eoae B. Aanu i?ioann
i?aia?aciaaiey iao?eou R ?aciauai ia 3 yoaia. 1 yoai. Auiieiei i?aia?aciaaiey
no?ie iao?eou oae, ?oiau ana yeaiaiou, ea?auea ie?a aeaaiiaeuiuo yeaiaioia
iiaiao?eou A, ia?aoeeenu a ioee. I?e yoii ii?ao eniieuciaaouny auai? aeaaiiai
yeaiaioa. 2 yoai. Auiieiei i?aia?aciaaiey oae, ?oiau ana yeaiaiou, ea?auea
auoa aeaaiiaeuiuo yeaiaioia iiaiao?eou A, ia?aoeeenu a ioee. I?aia?aciaaiey iaai
auiieiyou a ia?aoiii ii?yaea: ni noieaoa iiia? n e ai noieaoa iiia? 2. Iinea caaa?oaiey i?ioaao?u iiaiao?eoa A
i?aa?auaaony a aaeie?io? aeaaiiaeuio? iao?eoo, a iiaiao?eoa B aoaao ?aaia
eneiiie ia?aoiie iao?eoa A Caaa?a iienea ?aoaiee nenoaiu eeiaeiuo o?aaiaiee eiaao ia
oieuei naiinoiyoaeuiia cia?aiea, ii ?anoi yaeyaony ninoaaiie ?anou? aeai?eoia
?aoaiey iiiaeo iaeeiaeiuo caaa?. Iniiaiua iaoiau ?aoaiey NEO: Ionou eiaai nenoaio eeiaeiuo o?aaiaiee:
I?inoie iaoia Aaonna ninoieo a neaao?uai. Ninoaaei ?anoe?aiio? iao?eoo,
i?eienaa e iao?eoa eiyooeoeaioia NEO aiiieieoaeuiue noieaao – i?aaua ?anoe
o?aaiaiey: Auiieiei iaa no?ieaie ?anoe?aiiie iao?eou i?aia?aciaaiey,
aiaeiae?iua oai, eioi?ua auee iienaiu a i. 2.1:
Oaia?u ii?ii au?eneeou eneiiua aaee?eiu x , …
, x Aey
?anoe?aiey aicii?iinoae e iiauoaiey onoie?eainoe i?eaaaaiiiai aeai?eoia
eniieucoaony auai? aeaaiiai yeaiaioa. Ii?yaie iaoiaa Aaonna ?aaai
O(n I?aanoaaei
nenoaio eeiaeiuo o?aaiaiee a iao?e?iie oi?ia: Oiii?ei iineaaiaa ?aaainoai neaaa ia A O?eouaay, ?oi A Oaeei
ia?acii, ?aoaiea nenoaiu auiieiyaony a aaa yoaia:
Ianiio?y ia oi, ?oi iaoia ia?auaiey iao?eou eiaao oaeie ?a ii?yaie, eae e iaoia
Aaonna - O(n ), ii iauaio au?eneaiee ii i?iea?uaaao aio a ianeieuei
?ac. Iaiaei, anee NEO iaiaoiaeii ?aoaou iiiaie?aoii e i?e yoii eciaiyaony eeou
aaeoi? i?aauo ?anoae, iaoia ia?auaiey iao?eou noaiiaeony ana ?a
auaiaiui. Eeann eiaao i?eaaoiua e iauaainooiiua ?eaiu-aaiiua e
?eaiu-ooieoee (iaoiau). Aey o?aiaiey eiiiiiaioia iao?eou eniieucoaony iaiiia?iue
aeiaie?aneee iannea yeaiaioia oeia ia?aiao?a oaaeiia. Aey nicaaiey iauaeoa
i?aaoniio?aiu o?e eiino?oeoi?a: eiino?oeoi? ii oiie?aie?, eiino?oeoi? n
ia?aiao?aie, eiino?oeoi? eiie?iaaiey e aano?oeoi?. Aey auiieiaiey iii?anoaa
iao?e?iuo iia?aoee nicaaiu ia?aa?o?aiiua iia?aoee: i?enaaeaaiey (=), nei?aiey
(+), au?eoaiey (-), oiii?aiey(*) e o.i. Ia aaca iia?aoi?ia aaiaa/auaiaa N++
?ac?aaioaiu ooieoee aaiaa iao?eo ec iioiea e auaiaa eo a iioie,
i?aaoniao?eaa?uea a neo?aa oaeeiaiai aaiaa/auaiaa eae oaenoiao? oi?io o?aiaiey,
oae e aeia?io?. Ainooi e ?eaiai-aaiiui eeanna – ?eneo no?ie e noieaoia iao?eou
inouanoaeyaony n iiiiuu? iaoiaia size_row() e size_col(). Aey
ainooia e yeaiaioai iao?eou nicaai ia?aa?o?aiiue iia?aoi? auciaa ooieoee
operator() (dim x, dim x), aaa dim – ia?aii?aaaeaiiue oei unsigned char.
Aucia ooieoee eniieucoaony eae iia?aoi? eiaaene?iaaiey, i?eieia?uee aaa
a?aoiaioa. Aiaeiae?ii nicaai iia?aoi? auciaa ooieoee n iaiei a?aoiaioii
operator() (dim x). Aey aaiiiai eeanna – yoi i?aiu aa?iua ia?aa?o?aiiua
iia?aoi?u, o.e. iie eniieuco?ony ai anao ooieoeyo e iia?aoi?ao, a eioi?uo
i?ienoiaeo ia?auaiea e yeaiaioai iao?eou. Eiino?oeoi? ii oiie?aie? nicaaao iao?eoo ioeaaiai ?acia?a.
A aaeuiaeoai ?acia? yoie iao?eou ii?ii eciaieou n iiiiuu? ooieoee newsize(i,
j). Yoi iau?iue
eiino?oeoi? n ia?aiao?aie, eioi?ue i?eieiaao a ea?anoaa ia?aiao?ia ?acia?u
iao?eou e nicaaao iaiiia?iue aeiaie?aneee iannea ?acia?ii m*n, aaa m – ?enei
no?ie, a n – ?enei noieaoia iao?eou. N oaeu? aicii?iinoe eniieuciaaou aai aey
nicaaiey aaeoi?ia, aoi?ie ia?aiao? eiino?oeoi?a caaai eae oiae?eaaaiue ni
cia?aieai 1. Aey ia?aiia?aeuiie "eieoeaeecaoee" yeaiaioia iao?eou ioeyie
eniieucoaony ooieoey setmem(). Eiino?oeoi? i?eieiaao a ea?anoaa ia?aiao?a nnueeo ia iauaeo
eeanna (ia nouanoao?uo? iao?eoo), ii?aaaeyao aa ?acia?, auaaeyao aey iaa iaiyou
e eiie?oao a yoo iaiyou niaa??eiia iao?eou, i?eieiaaiie ii nnueea. Oaeei
ia?acii, nicaaaony oi?iay eiiey iao?eou n oaeoueie cia?aieyie aa
yeaiaioia. Ooieoey iia?aoee
i?enaaeaaiey "=" Matrix& operator= (Matrix&): Aaiiay ooieoey
n?aaieaaao aa?an ia?aaaaaaiiai ii nnueea iauaeoa n aa?anii nianoaaiiiai eeanna,
?oiau ia i?aai?eiyeanu iiiuoea i?enaieo iauaeo naiiio naaa. Iinea yoiai
nicaaaony iiaue iannea n ?eneii yeaiaioia, ?aaiui ?eneo yeaiaioia ianneaa
i?eieiaaiiai ii nnueea, e a yoio iannea caiineony niaa??eiia i?eieiaaiiai
ianneaa. Aica?auaaony ?acuiaiiaaiiue oeacaoaeu this (return
*this;). Yoe ooieoee ?aaeeciaaiu eae a?o?anoaaiiua
ooieoee e aeai?eoiu yoeo ooieoee aiaeiae?iu ii naiaio ninoaao. Iauee aea
i?ioioeia yoeo ooieoee: friendMatrixoperator@(const
Matrix&,const Matrix&). I?eiaiaiea a?o?anoaaiiuo ooieoee a aaiiii
neo?aa oaeaniia?acii aey oiai, ?oiau eiaou aicii?iinou ia?aaaaaou a iia?aoi?
ooieoe? iauaeou a e?aie iineaaiaaoaeuiinoe. A yoeo iia?aoi?ao-ooieoeyo aia?aea
nicaaaony a?aiaiiue iauaeo oeia iao?eoa (n iiiiuu? eiino?oeoi?a eiie?iaaiey), a
eioi?ue eiie?oaony ia?aay iao?eoa e eioi?ue i?e auoiaa ec ooieoee yaeyaony
aica?auaaiui iauaeoii. Caoai yoa iao?eoa noiie?oaony (au?eoaaony, oiii?aaony) n
iao?eoae, noiyuae iinea ciaea iia?aoi?a ii niioaaonoao?uei i?aaeeai iao?e?iuo
iia?aoee. I?e yoii aey ainooia e yeaiaioai iao?eou e eiaaene?iaaiey eniieuco?ony
ia?aa?o?aiiua iia?aoi?u auciaa ooieoee operator()(dim x, dim x) e
operator()(dim x). Yoio iia?aoi?-ooieoey ?aaeeciaai eae ?eai eeanna e i?aaiacia?ai aey
aicaaaaiey iao?eou a noaiaiu. A neo?aa, eiaaa cia?aiea aoiaiiai ia?aiao?a
?aaiiieion aaeieoa inouanoaeyaony aucia ooieoee au?eneaiey ia?aoiie iao?eou
iaoiaii i?aia?aciaaiee Aaonna, aey ?aai ?ac?aaioaia ioaaeuiay ooieoey
Matrix&Gauss(dim, dim). Oaeei ia?acii, eniieuciaaiea yoiai
iia?aoi?a iicaieyao ?aoaou nenoaio eeiaeiuo aeaaa?ae?aneeo o?aaiaiee a
i?aanoaaeaiee X = (A^-1)*B, aaa X e B –aaeoi?a iaecaanoiuo e i?aauo ?anoae
niioaaonoaaiii. Ooieoey – iia?aoi? friendVARTYPEoperator%(const
Matrix&,const Matrix&): Ooieoey au?eneaiey neaey?iiai
i?iecaaaaiey aaeoi?ia. A iae a ia?aea i?iaa?yaony, yaey?ony ee ia?aaaaaaiua
iauaeou aaeoi?aie, a caoai au?eneyaony neaey?iia i?iecaaaaiea. Ia?aay ooieoey
au?eneyao ii?aaaeeoaeu nianoaaiiiai iauaeoa (iao?eou). I?e yoii eniieuco?ony
ooieoey Matrix&Gauss(dim, dim). Ooieoey VARTYPE vmodule()
au?eneyao aeeio (iiaoeu) aaeoi?a Aaiiay ooieoey
ia ii?ao auou ?eaiii eeanna, iiyoiio ?oiau eiaou ainooi e i?eaaoiui yeaiaioai
eeanna, iia iauyaeaia "a?o?anoaaiiie" ooieoeae. Iia eiaao aaa ia?aiao?a: nnueeo
ia iioie, eioi?ue iaoiaeony neaaa io ciaea iia?aoee <<, e nnueeo ia
iauaeo, eioi?ue iaoiaeony neaaa io ciaea iia?aoee, aaiiua yoiai iauaeoa e aoaoo
auaiaeouny. Caoai neaaoao oi?iaoe?iaaiiue auaia a iioie anao yeaiaioia ianneaa e
aica?auaaony iioie. Anee o?aaoaony auaanoe aaiiua a oaee, io?ii ioe?uou aai
i?eniaaeiaieai e iioieo ofstream. Oae ?a eae e
i?aauaouay, aaiiay ooieoey ia ii?ao auou ?eaiii eeanna, a iiyoiio aey ainooia e
i?eaaoiui yeaiaioai eeanna iauyaeaia "a?o?anoaaiiie" ooieoeae eeanna. Iia oae ?a
eiaao aaa ia?aiao?a: nnueeo ia iioie, eioi?ue iaoiaeony neaaa io ciaea >>,
e nnueeo iauaeo, eioi?ue iaoiaeony neaaa io ciaea iia?aoee, a iaai e aoaoo
aaiaeouny aaiiua ec iioiea. Caoai neaaoao aaia aaiiuo ec iioiea a yeaiaiou
ianneaa e aica?auaaony iioie. Aey aaiaa aaiiuo ec oaeea, io?ii ioe?uou aai
i?eniaaeiaieai e iioieo ifstream. Ooieoee i?aaiacia?aiu aey auaiaa a oaee e aaiaa
ec oaeea iao?eo a ec aaie?iii i?aanoaaeaiee. Aey yoiai iaiaoiaeii ia?aaaou a ieo
niioaaonoao?uo? nnueeo ia ioe?uoue oaee. Yoi ooieoey-?eai, eioi?ay aucuaaaony aey oeenaoee
iaeioi?uo ioeaie i?e nicaaiee iao?eo e ?aaioa n ieie, oaeeo eae ionoonoaea
iaiyoe, ianiaeaniaaiiinou ?acia?ia iao?eo i?e iia?aoee oiii?aiey, iiiuoee
au?eneeou io?eoaoaeuio? noaiaiu iao?eou e o.i. #include <mem.h> // aey setmem() template <class VARTYPE> class Matrix { public: Matrix(dim,dim=1); // Iau?iue eiino?oeoi? // ainooi e yeaiaioai iao?eou VARTYPE& operator() (dim x) const { return (*this)(x,0); }//
yeaiaioo Matrix<VARTYPE>&
operator=(const VARTYPE&); Matrix<VARTYPE> operator!(); //
o?ainiiie?iaaiea Matrix& Gauss(dim,dim); // i?aia?aciaaiea
ii Aaonno Matrix minor(dim,dim); // aica?auaao oeac. ieii?
iao?eou Vector column(dim j) // aica?auaao aaeoi?-noieaao
iao?eou Matrix<VARTYPE>& operator<<=(const Matrix
&A) { return newsize(A.m,A.n)=A; }
Matrix<VARTYPE>& insert(const Matrix&, dim=0, dim=0);// anoaaeou
?anou iao?eou Matrix<VARTYPE>& newsize(dim, dim=1);//
onoaiiaeou iiaua ?acia?u friend
Matrix<VARTYPE> operator+(const Matrix<VARTYPE>&,const
Matrix<VARTYPE>&);//A-B
friend Matrix<VARTYPE> operator*(const Matrix<VARTYPE>&,const
Matrix<VARTYPE>&);//A*B friend Matrix
operator*(const Matrix<VARTYPE>&, const double&); //A*k friend int
operator>>(istream&,Matrix<VARTYPE>&); dim
read(ifstream&); // oaeeiaia ?oaiea e caienu iao?eou friend
VARTYPE operator %(const Matrix<VARTYPE>&,const
Matrix<VARTYPE>&); template <class
VARTYPE> if(!matr) ERROR_MATRIX(1); Matrix<VARTYPE>::Matrix(const Matrix<VARTYPE>
&M_Obj) //Eiino?oeoi? eiie?iaaiey movmem(M_Obj.matr, matr,
sizeof(VARTYPE)*m*n); Matrix<VARTYPE>& Matrix<VARTYPE>::operator=(const
Matrix<VARTYPE> &M_Obj)
movmem(M_Obj.matr,matr,sizeof(VARTYPE)*m*n); Matrix<VARTYPE>&
Matrix<VARTYPE>::operator=(const VARTYPE &f) return *this; { if (q!=-1) ERROR_MATRIX(3); M.insert(*this); return M.extract(M.m,M.m,0,M.m); Matrix<VARTYPE>
Matrix<VARTYPE>::operator!() // O?ainiiceoey
A(j,i)=(*this)(i,j); VARTYPE Matrix<VARTYPE>::determ() // ?aeo?neaii iaoiaeo
ii?aaaeeoaeu iao?eou if ((*this)(i,0)) return d*M.Gauss(i,0).minor(i,0).determ(); VARTYPE
Matrix<VARTYPE>::vmodul() // Iiaoeu aaeoi?a for(int i=0; i<m; i++) Matrix<VARTYPE>&
Matrix<VARTYPE>::Gauss(dim M, dim N)
for(j=0;j<n;j++)
for(i=0;i<m;i++) Matrix<VARTYPE>
Matrix<VARTYPE>::minor(dim M, dim N)// aica?au. iao?eoo aac { template
<class VARTYPE> // anoaaea if (M+A.m>m N+A.n>n)ERROR_MATRIX(6); template <class VARTYPE> //
ecaea?aiea if (M+LM>m N+LN>n) ERROR_MATRIX(7); A(i,j)=(*this)(i+M,j+N); VARTYPE& Matrix<VARTYPE>::operator() (dim M,
dim N) const Matrix<VARTYPE> operator+(const Matrix<VARTYPE>
&A, const Matrix<VARTYPE>&B)
return C; Matrix<VARTYPE>
operator-(const Matrix<VARTYPE> &A, const Matrix<VARTYPE>
&B) return C; Matrix<VARTYPE> operator*(const Matrix<VARTYPE>
&A,const Matrix<VARTYPE> &B) if(A.m==3 && A.n==1 &&
B.m==3 && B.n==1) A.ERROR_MATRIX(2); C(i,j)+=A(i,k)*B(k,j); Matrix<VARTYPE> operator*(const double &f,const
Matrix<VARTYPE> &A) return B; Matrix<VARTYPE> operator*(const Matrix<VARTYPE> &A,
const double &f) return B; { delete [] matr; setmem(matr,sizeof(VARTYPE)*m*n,0); } ostream& operator<<(ostream
&out,Matrix<VARTYPE> &A) out<<endl; int operator>>(istream
&inp,Matrix<VARTYPE> &A) return 0; return; } if (C1==C2)
(*this)(i,C2)=b; { (finp.get(m)).get(n);
delete []matr; matr=new VARTYPE[m*n]; finp.read((char
*)matr,sizeof(VARTYPE)*m*n); return finp.fail(); {
(fout.put(m)).put(n); template <class VARTYPE>
if(A.n!=1 B.n!=1) A.ERROR_MATRIX(9); scalarmul =
scalarmul+A(i)*B(i); void Matrix<VARTYPE>::ERROR_MATRIX(dim E) const "Iao?eou ia niaeaniaaiu aey oiii?aiey",//2
"Ioeaaie aaaouee yeaiaio a i?aia?aciaaiee Aaonna",//5 "Ecaeaeaaiay iao?eoa auoiaeo ca a?aieou
aaciaie",//7 cerr<<"ERROR: "<< message[E] << endl;
exit(1); #include
<fstream.h> Matrix<double>
V(3),X(3),H(3),U(3); A(2,0)=1.3; A(2,1)=2.1; A(2,2)=4.1; V(0)=2.1; V(1)=3.31; V(2)=1.4;
cout<<"A:\n"<<A<<endl; cout<<"Press any
key...\n";
cout<<"B:\n"<<B<<endl; //******************************
cout<<"H:\n"<<H<<endl; //****************************** cout<<"X=V-
H:\n"<<X<<endl; cout<<"A:\n"<<A<<endl; cout<<"Press any
key...\n"; D(0,0)=1; D(0,1)=2; D(0,2)=3; { ifstream fin("test.mtr"); cout<<"D:\n"; getch(); cout<<"C=A^-
1:\n"<<C<<endl; // A*X=V X=(A^-
1)*V
cout<<"X:\n"<<X<<endl;
d=A.determ(); cout<<"modul of V = "<<d<< endl; V(0)=4; V(1)=3;
V(2)=2; cout<<"Press any key...\n"; cout<<"A:\n"<<A<<endl; C=5*A;
cout<<"B=A*2:\n"<<B<<endl; //*************************
*********** 1.12.23.32723.19.25.3 2.41.14.4481-1.6-6.93.4 2.41.14.448135.643.210.3 5.
41 Oiii?aiea iao?eou ia aaeoi? Caienu
iao?eou a oaee Au?eneaiea ia?aoiie
iao?eou 1.750212 -0.093458 -1.308411 1.750212 -0.093458 -1.308411 Ii?aaaeaiea aaoa?ieiaioa iao?eou Au?eneaiea neaey?iiai i?iecaaaaiey aaeoi?ia A ?acoeuoaoa auiieiaiey eo?niaiai i?iaeoa auee
?ac?aaioaiu aaa eeanna ooieoee aey ?aoaiey i?inoaeoeo caaa? eeiaeiie aeaaa?u.
?enei yoeo ooieoee n?aaieoaeuii iaaaeeei, iaiaei ii?ii eaaei aiaaaeou a yoe
eeannu aieaa nei?iua ooieoee, iino?iaiiua ia aaca o?a eia?ueony. Eeannu
iicaiey?o ?aaioaou n iao?eoaie e aaeoi?aie, yeaiaiou eioi?uo iiaoo auou e?aiai
oeia, iaiaei ia i?aeoeea ?aua anaai eniieucoaony oaeue oei e oei ?enae n
ieaaa?uae caiyoie. Eeannu iaienaiu ia ycuea N++, iaiaei iiaoo auou eaaei
ia?aienaiu ia e?aii ec nia?aiaiiuo ycueia i?ia?aiie?iaaiey, oae eae i?eaaaaiu
aiaieuii i?inoua aeai?eoiu anao eiiiiiaioiuo ooieoee. Auee iaeneiaeuii
i?aaoniio?aiu ana aicii?iua ioeaee, eioi?ua iiaoo aicieeioou i?e eniieuciaaiee
ooieoee aaiiuo eeannia. Iniaia aieiaiea oaaeyeinu ?acoiiiio auaaeaie? iaiyoe iia
iauaeou ai a?aiy auiieiaiey i?ia?aiiu, iiyoiio ana ooieoee auee ouaoaeuii
ioea?aiu. Eeannu Matrix e Vector iiaoo auou yooaeoeaii i?eiaiaiu ia i?aeoeea a
caaa?ao, o?aao?ueo iia?aoee n iao?eoaie e aaeoi?aie, a oae?a naycaiiuo n
?aoaieai nenoai eeiaeiuo aeaaa?ae?aneeo o?aaiaiee. Aene?aoiay iaoaiaoeea, eiiniaeo eaeoee. A. A. Caniaaiei.
Caii?i?ua, 1998 a. ?cue i?ia?aiie?iaaiey N++. A. No?aono?oi. Eeaa:"AeaNioo", 1993
a.
| |