Г. Шилтд - Самоучитель C++ (DJVU) (1114955), страница 81
Текст из файла (страница 81)
Работа конструктора А Работа конструктора В Работа конструктора С Работа деструктора С Работа деструктора В Работа деструктора А 4. Порядок вызова конструкторов — АВС, порядок вызова деструкторов — СВА. 5. ()1пс1ис)е <1овтгеаьп> паупер патпеврасе всс(; с)авв Ьаве ( (пг 1, 3; роЬ11с: ЬаВЕ (1Пг К, 1пс у) (1 = х; 7' = у) ) 5?В Самоучмтель чо1й виоы11() ( соус « 1 « ' ' « 1 « '~п') с1аее йег1чей: рпЬ11с Ьаке 1пТ 1; рсЬ11с: йел1чей(1п(. а, 1пс Ь, 1пс с): Ьаве(Ь, с) 1=а; ) коуй вЬоы() ( сопс «У. « ' '; вЬою2 (); 2: 1пЬ 1 П йелЫей оЬ(1, 2, 3); оЬ.вЬоы()' гевихп 0; 6. Пропущены слова "общего" и "специальным".
Упражнения 8.2 1. $1пс1и<)е <1ов~геатп> пеупд пагпевоасе вой; 1пс та1п() сои1.веТГ(вов:: вихров) 2 « 10 « « 10 « ~п 2 геспгп О; 2. ()1пс1ийе <1ов~гевв> ив1пд папеврасе вЫ; 1пс па1пЦ ( сои1. веСЕ(1ов:. "виомро1пс ( 1ов::оррегсаве '„ 1ов:: вс1епС1йвс); сопс « 100.07 579 Приложение В. Ответы на вопросы и решения упражнений геШгп О; 3. ((1пс1цг(е <1озТгеага> ия?пд пап1еярасе ясс(; ?пг тпа1п() ( 1оз::йпйЕ1асз й'; Г = соиС.г1адз(); // сохранение флагов сои~.цпзегг"(1оз::бес)( сонг,зегг(1оз::знои)>азе ~ 1оз.":Ьех); сонг « 100 « ' 1п ' р соц1 .Х1адз (Е) г т/ возврат флагов в исходное состояние гевнгп О; 8.3 1.
/* Создание таблицы натуральньх и десятичных логарифмов чисел от 2 до 100 '* / сг?пс1иое<1озьгеат> М?пс1цбе <спесЛ> ня?пд пап~еярасе яСЙ; флс жафп () ( с(онЬ1е х; сонг. ргес1з1оп (5); соня « "х 1д х 1п хоп~в"г аког(х = 2.0г х <= 100.0; х++) ( сои?,иМг?~(10); соне « х « ° ' сон~.иЫ~Ь(10)' сонг « 1од10(х) « " "> соцс.иЫТЬ(10)г сено « 1оо(х) « "~п"; гегнгп О( 580 Самоучитель С++ 2. ()1пс1ис(е <1оз~геат> ((1пс1ис)е <сяслфпд> няфпд па~пеярасе ялй; чофс) сеШет(сЬат *з) 1пл жафп() ( сеп~ес("Это здесь!" ); сеп~ег("Иве нравится С++.") гебитп 0~ уоЫ сеп~ег(сйат *я) (п1 )еп; )еп = 40 + (зйг1еп(з)/2); сон~.иЫЕЬ(1еп); сонл « я « "~п"; 6.4 1И.// Табюпща натуральных и десятичных логарифмов чисел от 2 до 100 ((1пс1ис(е <1озскеасп> ((1пс1пс(е <1опьапфр> йгфгс1нбе<списЬ> няппд пап1еярасе ялй; 1пв ва1п() ( бонЬ1е х; соил « зе~ргес1з1оп(5); соня « "х 1д х 1п х~п~п"; бол(х = 2.0р х <= 100.07 х++) ( сон'= « зесю(10) « х « сочв « зеьи(10) « 1од10(х) « сопл « зеТи(10) « 1од(х) « "~п"'; ге'нлп 0; 1Ь.
()1пс1и<)е <1оз1геат> ()1пс1ибе <1опап1р> Приложение В. Ответы на вопросы и решения упражнений 561 ()1пс1пс(е <сягппВ> ця)пя патвезрасе я(с); чоЫ септет(сЬат 'з)) )п( ~пати () 1 седеет ("Это здесь! '"); септет("мне нравится С++."); хегпхп 0; чоЫ седеет(спат "я) 1пс 1еп; 1еп =- 40 + (зтх1еп(з) Л); сосг « яегн(1еп) « я « "~п"; 2. сося « зетуозГ1арз(1оз::зЬаиЬазе 1 1оз::Ьех) « 100; 3.
Установка флага Ьоо!а)рЬа для потока вывода приводит к тому, что значения булева типа выводятся на экран в виде слова Ггае или Ызе. Установка флага Ьоо)а)рЬа для потока ввода позволяет вводить значения булеза типа с помон(ью слова ггае или )а)зе. 8.5 1, ()гпс1ч<)е <1озхтеал> 1) Ыс1иае <сятг)пц> Ф)пс!ис)е <сягсП(Ь> ия) па паптеярасе я(с(; с1аяя ягггуре 1 сЬаг *р; (пт !еп; раЬ11с: зхтхуре (спах "рят); -зттхуре () (г)е1егс (1 р; Гг)епд ояггеапт аоретатот«(саттер йзСтеа~п, ягг(уре аоЬ); зхтхуре:: зхтхуре (сЬат *рог) 1еп = ягг1еп(ргг) +- 1; 582 Самоучитель р = пою сйаг (1еп); 1~('р) сопп « "Ошибка выделения памяти~пь; ех1г(1) > япгсру(р, ргг) ) ояггеатп аорегагог« (овсгеаш авггеаа4 в1ггуре ьоЬ) евгение « ОЬ.рР гепигп япгеалц 1пг па1п() ягггуре в1 ("Это проверка"), в2("Мне нравится С++")) сопя « в1; сонг « епб1 « я2 « епд1; ге1игп О; 2.
()1пс1и~)е <1овГгеаш> пя1пд патеярасе вГ<(; с1аяя р1апег ( ргогесгес(: йоцЬ1е с)1япапсе; // расстояние в ьмлях от Солнца 1гп геуо1уе; // полный оборот в днях риЬ11с: р1апег (с(опЬ1е с), 1пп г) ( с1ягапсе = д) геуо1уе = г; с1аяя еаггй: рпЬ11с р1апег ( бопЫ е с1гспжйегепсе; // окружность орбиты рыЬ11с: еаггЬ(боцЬ1е с), 1пп г) : р1апеГ(с) сугспшйегепсе = 2 * б1япапсе * 3.1416; ) йгуепб ояггеав ьорега1ог« (ояггеат аяггеаш, еаггь воЬ) ояпгеаш апрЕГаГОГ« (ояпгеат йя1ГЕЫ, еагпЬ ЯоЬ) аггеей « "Расстояние от солнца: " « оЬ.Мвгапсе « Приложение В, Огзегы на вопросы и решения упражнений 583 зггеагп « "Оборот вокруг Солнца: " « оЬ,гечо1зге сс '~п' г зттеат « "Окружность орбиты: " « оЪ стгсппзйегепсе; яггсагп с< '~п') гсгцгп зтгеагп; !пг пауп() еаг(Ь оЬ(ЭЗОООООО, 365) ) соцт « оЬ; гегцгп О) 3.
Пользовательская функция вывода не может быть фуНКЦИЕЙ-ЧЛЕНОМ потому, что ОбЪЕКт, который вызывает функцию, не является объектом определенного пользователем класса. 8.6 1. гтгзс1нйе <1озтгеапг> гсупс1ибессягттпд> ()1пс1ос(е <сягй11Ъ> ияупс пагаеярасе ягб; с1аяя зтгсуре ( сбат *рГ уггс 1еп( рцЬ11с; зтгтуре[сЪат *ртг); -зтгтуреО ( бе1есе () рз гттепс( озсгеаюп аорегатог<с (озггеав азттеапь ястгуре аоЬ); йгуепс( 1зггекп аорегагог» (1яттеапг ыястеага, ястбуре ась) ' зтттуре::зггсуре(сЬаг *рст) ( 1еп = зтг1еп(ртт)+1; р = пеы сЪат (1еп); 1~ (! р) сост « "Свибка выделения памяти~п"; ех1Г (1); ) ястсру(р, ртг) ~ Самоучитель С+т ояЬгеатп йорегагог« (овлгеаттт йвсгеатл, яггЬуре яоЬ) ( ялгеатл « оЬ.р; геппгп ят сеатлт .
япгеатл аорегагог» ('япгеап йвггеатл, ясгпуре яоЬ) сЬаг ЬетвР(255); яггеатл » Ьетлрт 11(всг1еп(театр) >= оЬ.1еп) йе1есе И оЬ.рт оЬ.1еп - ягг1еп(лелтр) ч 1; оЬ.р = петч с1таг (оЬ.1еп); 12(!оЬ.р) ( соил « "гибка выделения паьтятиттп"; ех1с (1); вггсру(оЬ.р, гелтр) геьпптт я'ьгеатлт 1пс лтатп () в1т 'ттп' «в2; сопл « сопк « "1пВведите строку: в1; в1; сопЬ « с1гт » соттЬ « гесыгп О; 2.
()1пс1ис(е <1ояТгеапт> ыяупо патлеярасе вью с1аяя рассол 1пс питлт т',т число 1пс 1йасг;,т,т наииеньтлий делитель рпЬ11ст рассол (1пь 1); япгтуре в1 ("Это проверка"), в2 ("Мне нравится Ст+" ) т Лриложение В. Ответы нв вопросы и решения упражнений 555 (г(спг( оятгеагп йорегагог«(ояГгсагп йзггеаа, (асгог оЬ) ~ (г(епд (яггеагп йорегагог»((яггеагп йзсгеап~, (асгог йоЬ); гас~ог:: йассог (йп" 1) ( (пг и; Хог(п=2; п<(1/2); п~-+) 1й(!(Нп)) Ьгеа1; Н (п<(1/2)) 1йасг.
= и; е1яе 11ася = 1; 1яЬгеат йорегасог» (1яггеап йвггеав, 1асгог йоЬ) ( яягеал~ >> оЬ.пслц (пг г,; аког(п 2у п<(оЪ.пша/2) т и+4) И ( ! (оЬ. пглпЪп) ) Ьгеа1; йй (п<(оЬ.пшл/2) ) оЬ. 1~асс = и; е1яе оЬ. 1~асс = 1; геснгп яггеаш; оясгеап 11орегасог« (ояггеап йяггеагл, 1асгог оЬ) .ясгеап « оЬ. 1йасг « " Это наименьиий делитель числа ясгеап « оЬ.пыл « '1п'; гегигп ясгеап; 1лс п~айп (] гассог о(32); сонг « о; снап»о; сонг « о) гегнгп Ог 888 Самоучитель С++ Проверка усвоения материала главы 8 1. ()1пс1ос(е <1оя~геаа> пя1по пашеярасе ясй; 1пс ва1п() сопл « 100 « ' сопС.ипзеТй (1оз:",бес) ) !! сброс Флага бес соШ.ее~~(1оя::Ьех)) соус « 100 « сос~ .ипееСГ(1оз:; Ьех) ) !! сброс флага Ьех соиТ.еесг(1оз::ос~); соп « 100 « '~п'; геппгп О) 2. ((1пс1цбе <1оз~геап> пя1пу патеярасе ясс(; 1пбта1п () ( сои~. яе~й (5.оз:: 1еГТ); сопС.
ргес' з1оп (2); соиС .111('+') т сои~. иЫСЬ (20); сопл « 1000.5354 « '~п'р гесигп 0; За. Нпс1ис(е <1озСгеаа> пяупд папеярасе ясй; 1пс ва1п() сопя сс 100 « сопл « (лех « 100 « сопс «осб « 100 « '~п': гесцгп 0; Приложение В. Ответы на нспрооы и решения упражнений 5В7 ,ЗЬ. ()1пс1ш$е <1ов~геаж> ()1пс1ибе <1ошап1р> пя1пд патпеярасе ясс); 1п~ н»а1п() сося <с ве~1овй1аов(1ов :1е~я) ) соня « ве~ртес1в1оп(2); сопя « веШ11(»*») р сопя « ве~и(20) ) сонс «1000.5354 « '1п' у тепптп 0; 4. 1ов:: йгй11ацв й; Й = соШ . Е1асв (); 7/ сохранение сов~.Г1ацв(); // отображение 5. Шпс» в~тон»т> вя'..:..: ° .: .
яс)р Аве» // результат возведения в степень рит::рыг(1пс Ь, 1п" е) ( Ьаяе = Ь; ехропепя = е; геян1с = йод( р е; е — ) геяи1с = геян1с * Ьаяе; оясгеат аоретасот«(ав~теав авсгеат, рит оЬ) яьсеап « оЬ.Ьаве « " в степени " <с оЬ.ехропепя; ясгеап « " равно " « оЬ.теяи1~ <с '1п'7 ехропепс; <)онЬ1е теяп1с; рвЬ11с: рит(1пт. Ь, 1пс йт1епс) се~геев йг1епс) 1вСгеап~ е)» аоретаСот«(овевает ав~геа~п, рит оЬ); йуоретасот» (1вТтеашй1ясгеат, риг аоЬ)у 588 Самоучитель С++ гесигп ясгеап~; йяггеата йорегагог» (йясгеатп йяггеаа4 ржг яоь) ( 1п Ь, е; 'СОпг (< "Введите основание и показатель степени: негев » йа » е; рнг гекр(Ь, е); геспгп вогез; 1пстазп ( ) рог оЬ(10, 2) сонг « оЬ; сз п»оЬ; сон.
« оЬ; гегнгп О; б. // Эта программа рисует квадратн ()йпс1пг)е <тояггеат> пайпс папеярасе ясс1; с1аяя Ьох ( йпг 1еп; рпЬ11с: Ьох(йпс 1) ( 1еп = 1; Гг1епг(ояггеап~ йорегагог« (ояггеатп йяггеап„ Ьох оЬ) й ~/ рисование квадрата оясгеап йорегааог« (ояпгеаш йясгеагп, Ьох оЬ) ( 1пс аког(1-Ор 1<оЬ.1еп; 1++) ясгеата « '*'; ясгеап « тог(1=0) 1<оЬ.1еп-2; 1~~) ( вогез « '*' й аког(1=0; ~(оЬ. 1еп-2; 1++] ясгеаш << Приложение В. Ответы на вопросы и решения упражнений я1театп « "*1п" р Год (1-0; 1<оЬ. 1еп; 1++) яблеаш « '*' р я~пеап << ' ~п'; лебплп яслеат; 1пс па1п() ( )зох Ь1 (4), Ь2 (7); соиТ « Ь1 « епЫ1 «Ь2р теситп О; Проверка усвоения материала в целом 1.
()1пс1иЫе <1оя~геап> пя1пт патеярасе ясЫ; ()ЫеЯпе Б?ЕЕ 10 Объявление класса я~ас)< для символов с1аяя я'сас)< спал ясс1(Я?ЕЕ)~ // содержит стек 1пп поят // индекс вершины стека риЬ11с". я' ас)с (); до1Ы ривЬ (сЬаг сЬ); // помешает в стек символ сЬап рор(); // выталкивает из стека символ ~п1епй оялгеатв аорегапод« (ояптеата вяПкеатв, ясас)< оЬ) ) т Инициализация стека я~ас)~:: я~асМ О ))омещетлле символа в стек чо1Ы ясас)<::рпяЬ(спад сЬ) ( 1й (соя Я1ЕЕ) соис « "Стек полон"; гесцлп; С++ Самоучитель злое(гоз) =с~ц сов++> // Выталкивание символа из стека с)тат зсас1:: рор () ( (гоз==0) ( сопс « "Стек пуст"; геспгп О; // возврат пуля при пустом стеке ) гоз--; геспгп зГс1(Соз)< оясгеа~п йорегагог<< (озлгеаж йзлгемй, ясаск оЬ) ( сЬаг сЬ) ий11е <сй-оЬ.рор() ) я< пеат « сЬ; япгеан « епс(1; геспгп ясгеалп 1пп п~а1п () ясас).
я; з.ризЬ('а')) з.ризЬ( 'Ь ' ) ) з.рпзЬ('с')( сопл « я; сопл « я; гесс т 0; 2. ()1пс1пбе <1озггеагк> Ипс1пбе ссг1ве> пя1пд патеярасе асс<; с1аяя хассЬ ( Тки 1 Т; риЬИс: уча(сй Д ( ( = <1тпе(ИЖХ); ~г'епо оясгеат аорегагог«(озтгеат азтгеаж, иассь оЬ) Приложение В, Ответы на вопросы и решения упражнений оя1геатп аорега1оп« (озЬгеатп аяЬпеатп, ттапсЬ оЬ) ( .яСт тсс стп *1оса1Ь7 1оса1т. — 1оса11ттпе(яоЬ,п) 7 ЯСтеапт « азопттПЕ(1ОСа1Ь) « ЕПй17 геснвп ясгеатп; 1пп птафп () птапсЬ и; соил « птт теснин О; 3.
(тфпс1нйе <1озсхеапт> вяфпд патпеярасе япйт с1аяя вп По 1псЬея ( йонЬ1е асеев т йонЬ1е 1псЬеят рвЬ11ст ттотй яеп (йоиЬ1е Й) йееГ. = пт 1псЬея = Й * 12т ~ттепй 1з~геатп аоретапот» (1явтеат яяйтеатп, пт, йо апсЬез яоЪ)т йт"'епй оястеатп аорегасог«(оя~геатп йфясгеатп, тТ Со 1псЬез оЬ); )7 '.япвеатп аорета~ох»(фяйпеатп йт.яьвеалт, йп то 1псЬея яоЬ) ( йовЬ1е Йт сонс « "Введите число футов: яптеатп » Йт оЬ.зеп(~)т тепнтп япгеап; ояпгеапт йоретаТог« (ояптеатп Яяптеатп, Йв Ьо 1псЬез оЬ) ястеатп « оЬ.1ееь « " футов равно " « оЬ.фпсЬез; яптеатп « " дтоймамтп"7 /7риложение В.