Г. Шилтд - Самоучитель C++ (DJVU) (1114955), страница 73
Текст из файла (страница 73)
М. Иванов", "Невский проспект", "С.-ПЕтербург", "Рос", "46576")т а.бувр1ау(»; геспгп 0; 3. $1пс1пбе <1озггеат> ия1пд пашеярасе яЫ; 1пс готася (1пс з.); 1опд гомесе (1олд 1) сопя соус соШ сост. сост. « паше « "~п"; « ясгеяс « "~п"; « с1су « "~п"; <с ясасе « "~п"; « кур « "~Мп"; Приложение В. Ответы нв вопросы и решения упражнений 485 (п1 1патп () (пт а; 1опя 'о; а =- Ох8000; Ь= 8; соШ «тосасе(а); соп~ « "1п"; сои1 « тосайе (Ь); те1итп 0; 1пт то~аТе (1п~ 1) ( 1пт х; и (1 й Ох8000) е1яе х = О; х = 1 1« 1 — М,; теяпгп 1; 1опд гоСате (1опд 1) ( тпе 11 (1 Я Ох8СОООООО) х =- 1; е1яе х = О; =1«1; = х; теСптп Упражнения г.1 1)1пс1ибе <1оястеаж> пятпу патпеярасе аеб; 4.
Целое 1 является закрытым для класса шус3аяя, и к нему нет доступа из функции й1й180. Самоучитель С++ 48б ((сЫпе Б)ХЕ 100 // Конструктор Ч луре::с~ суре() ( аеас = са11 = О; ) Постановка значения в очередь чо1с( с( Йуре::с((1пТ пцкО (1а11 + 1==аеас( 1 1 (Са11 ж 1==ЯХЕЕ ай !аеас() ) сонь « "Очередь полна "т ге1цгп; ) ка11++; 1Й (1а11==31ЕЕ) Са11 = О; с)цеце (та11) = пвтп круговой цикл // Выталкивание значения из очереди 1пгс) ~уре::бес(() ! 1Й (аеас(==га11) соиС « "Очередь пуста"; геСцгп О; аеас)++; 1Е (аеас)=-Я1ЕЕ) Ьеай = О; гегцгп циече (Ьеаб); круговой цикл 1пС ва1п ( ) с) г.уре с(1, с~2; 1п Ток(1=1т 1<=10; 1++) ц1.с~(1); ц2.ц(1 * с1авв с) 1уре ( 1по чпепе(Я1ЕЕ]> // содержит очередь 1пс Ьеас1, са11; // индексы нержины и хвоста риЫ1с: с) ~уре(); // конструктор чоЫ ц(1п1 пплО ; // запоминание 1п~ бец(); // извлечение из памяти Приложение В.
Ответы на вопросы и решения упражнений Гог ((=1; з.<-10; 1++) соцб « "Элемент из очереди 1: " « с(1.бес)() « "~п" > соне « "Элемент из очереди Рм " « с(2.с1ес1() « "~п"; кебнтп 0; 2. // Имитация секундомера ()1пс1и<)е <Еов1геад~> ()1пс1ис(е <сС1ве> няйпо пжпеврасе в~Ф с1аяя ябориабсЬ ( ЙонЬ1е Ьео1п, епс(; риЬ11с: з1орхассЬ(); -зТормабсЬ(); нов ябатб (); ъоЫ янор (); нов зЬом(); зториассь:: зсорматсь () Ьед1п =- епо = 0.0) ) вториассЬ::-зториассЬ() ( сорб « "Удаление объекта я ориабсЬ зЬои(); чо16 вйориаьсЬ::вьатк() Ьео1п — (аонЬ1е) с1осЫ() / СЪОСЕБ РЕЯ БЕС; чоЫ зториатсЬ::втор() епб = (аонЬ1е) с1ос)с() / С?ОСКЯ РЕК БЕС; ) чоуб вЬормапсЬ::вЬом() ( соцб « "Затраченное время: '" « епс( — Ьед1п; сорб « "1п"; ~вв Самоучитель Сжж 1пс тпатп () 1 яСорхассЬ ха' сЬ; 1опд 1~ иаЬсЬ.зСагг() р йог[1=0; 1<3200001 1+~) р // время цикла ыа~сЬ,здор()г юагсЬ.зЬою(); гегпгп 0; 3.
У конструктора не может быть возвращаемого значения. г.г //Динамическое выделение памяти для стека (11пс1цс(е <1озегеапс й.пс1ибе <сягс(11Ь> ця1пд папеярасе яЫ; Объявление класса ясаск для символов с1аяя ясаск сЬаг +згск; // содержит стек 1пс Соя; // индекс верщины сбавка 1пе з1геу // размер стека риЬ11с: яТас)г(1пс я); // конструктор -зеасЫ(); // деструктор уоЫ рцяЬ(сЬаг сЬ); // помещает в стек символ сЬаг рор(); // выталкивает из стека символ // Инициализация стека зеасЫ:згасИ(1пг з) сопс « "Работа конструктора стекаМ"; Ьоя — 0; яЬс)г = (сЬаг *) пи11ос(з); 11 (! згс)с) ( сонг « "Олжбка выделения памяти1п"; ехз'г(1) > ятке = я; Приложение В.
Ответы нв вопросы и решения упражнений 499 .зсаск::-яСаск() ( атее(васк); Помещение символа в стек ~о1о. зсасИ::рияЬ(сйак сЬ) ( (й (~оя я1ке) соис « "Стек полон 1п") тееилп; ) .в" с]»[Сов] = с]т; 'соя++~ Выталкивание символа из стека с?~аг зсас)с."дрор () ( з к (~сж=О) ( сопс « "Стек пуст ~П 1 гевитп О; // возврат нуля при гп етом стеке соз —; геспгп зСс)е(соя) 1пб тяазп() ( образование двух, азтоаатически инициализируемых, стеков влас)» я1(10), з2(10) т т пб з1.рияй( 'а') т з2.рияЬ('х'); я1.рияЬ('Ь'); я2 .рияЬ(' у'); я1.риз)т('с'); 52 ° риз)1( Й )) Кок(1=0) 1<3; 1~-в) соис << символ из стека я1: " << я1 .рор () »» ю~~ л, Хог (1=02 1<3; 1е+) соис « "сизвзол из стека я2:" « в2.рор() « "1п"; тебитп О; 2. Шпс)идс <1оя е геащ> ()1пс1ие(е <с1(тпе) ия(па патпеярасе явс(т Самоучитель С++ 490 с1аяя Ь аль б ( п1те " яуясппе; рпЬ11с: Ь алй б(1ж~е т.
~) ) ,'/ конструктор уОЫ вЬои() и плср й;: и алй 6(псе йп) ( яуяпппе уо1й Т апй б::яЬои() сопя << с1Ьпе(йзувпле)р 1пп па1п() ~ыпе Ь х; х = сппе (И0?Л,) й алб 6оЬ(х); оЬ. яЬои(); гесптп Ос 3. ()1пс1ибе <1ое1хеаюп> пя1по пашеярасе я~0," с1аяя Ьох йопЫе 1, ы, Ы йопЫе ~то1шпе) риЫ1с: Ьох (йоыЬ1е а, йопЫе Ь, йопЫе с); '703.йУО1 ( ) г Ьох::Ьох (с(оыЬ1е а, йопЫе Ь, йопЫе с) ( 1=а; н=Ь; Ь= с; Приложение В, Ответы на вопросы и решения упражнений 49) т~оЫ Ьох:: ко1() сопЬ « "Обьем равен; " « чо10пе « "~п"; 1пг па1п() ( Ьох х(2.2, 3.97, 8.09), у(1.0, 2.0, 3.0); х.~то1() т у.~то1() у гегпгп Ор 2.3 1. Нпс1пс)е <1озТгеат> ияупд папеярасе я~с(; с1аяя агеа с1 ( рпЫ1с: бопЫе Ье1дЬг; йоиЫе иЫГЬ| с1аяя гесгапд1е: рпЬ11с агеа с1 ( рпЬ11с: гесгапд1е (бопЬ1е Ь, бопЫе х) бонЬ1е агеа (); с1аяя 1яоясе1ея: рпЬ1)с агеа с1 риЫус; 1яоясе1ея (аосЬ1е Ь, ЙопЫе и) боиЫе агеа (); гесгапд1е:: гесгапд1е (с(оцЬ1е Ь, с(опЫе ът) ( Ье1дЬс = Ь; иусгЬ = ж; 1яоясе1ея: ..
1яоясе1ея (боиЫе Ь, с1оиЬ1е и) ( ЬездЬг = Ь; иЫгЬ = н; Самоучитель о(овЬ1е гесЬапС1е:;агеа() геспгп хйб Ь * Ье1ОЬГ; о(оиЬ1е 1яоясе1ея::агеа[) ( гегпгп 0.5 * вайо(ЬЬ * Ье1ОЬг; 1пс ла1п() ( гесгапд1е Ъ (10, О, 5. О) ( 1яоясе1ея 1(4.0, б.О) г сонг « "Прямоугольник: " « Ь.аква () « ")п"; соил « "Треугольник: " « 1. агеа () « "чп", гегагп О; 2.5 1.
// Класс стек, образуемый с гомощью структуры ((Епс1ибе <ЕояЬгеалр пя1пд пащеярасе ягб; ((с(еЕ1пе О1ЕЕ 10 Объявление класса ягаск для символов ясгвсг яЬас)< ( яЬас)с()) // конструктор чобо( рияЬ(сЬаг сЬ); // помещает в стек символ сЬаг рер О; // выталкивает из стека символ рг1лаЬе: сЬаг яЬсК(Я1БЕ); // содержит стек 1пЬ воя/ // индекс вершины стека // Инидлализация стека зЬас~::аЬасЕ() ( сонг « "Работа конструктора стека ~п") Ьоа=0; // Помещение с~жвола в стек чей ЗсасЬ::риаЬ(сЬаг сЬ) Приложение В. Ответы на волросы и решения упражнений 493 Ы (?оз==31ЕЕ) соня « "Стек полон !п') тетикп; ) япсК[поя] = сп; соя.!-е; Вы!талкивание символа из стека с?!а з~асК;:рор() 1й (соя==О) 1 соил « "Стек пуст '!и теснкп 0; // возврат нуля при пустом стеке ) ?оз — ! тепнпп я?сК(Воя)! 1 и, ва1п () обраясванне двух, автоматически инипиализируемых, стеков явасК з1, я2; кт гевнтп 0; 2.
()1пс1ис?е <1озлгеат> ня?пц пал!еярасе ясс); пп?оп яюарЬу?ея [ нпя?днес[ с)так с[2); нпя?опес) 1; янарЬупез(ппз1!агнес? х); я1.ризЬ( я2.раап( я1.рия?!( з2.ризЬ( я1,роз?!( я2.риз?!( йот(1=0." '!~п!!. ! йо (1=0; "1п"; 1<3; 1++) соус « "ськчвол из стека з1:" « з1.рор() « 1<3; 1++) сонв « "сиьн!ол из стека з2:" « я2.рор[) « Самоучитель С++ чоЫ вир(); виарЬугев;: виарЬугев (ппз1дпег( х) (=Х; уоЫ виарЬу1ев1:вир() цпзтдпес( с]1аг сеп1р; лепр = с(0)р с(0] =- с(1]; с(11 = гавр; 1пг п1атп () зи1ьрЬусез оЪ(1) ~ оЬ, вир(); сонг « оЬ.1р гегцгп 0; 3. Анонимное объединение представляет собой особый синтаксический механизм, который позволяет двум переменным совместно использовать одну и ту же область памяти.
Доступ к членам анонимного объединения можно реализовать непосредственно, без ссылки на объект. Члены анонимного объединения находятся в той же области видимости, что и само объединение. 2.б 1, ()1пс1ис(е <1овггеап1> цзтпд патезрасе зе<() Перегрузка функции аЬв() тремя способаьла Функция аЬв() для целых тптгпе ъпг аЬв (ъпг п) ( сонг « "В функции аЬз ( ) для ъпг 1,п": гебагп п<0 ? -и: и; Функция аЬв() для длинных целых ъп11пе 1опд аЬв(1опд п) Приложение В.
Ответы нв вопросы и решения упражнений 495 сопс « "В функции аЬя() для 1опд1п"; , гевцгп п<О ? уу Функция аЬя() для вецественных двойной точности (п11пе ЙопЬ1е аЬя ИопЬ1е и) ( сопт « "В функции аЬя() для г(ооЬ1е~п" г гегцгп п<0 ? -и: и; 1п( па1п() сопс « Абсолютная величина -10:" « аЬя (-10) « "М"; соус « "Абсолютная величина -101,„." « аЬя(-105) « "1п"; сорб « "Абсолютная величина -10.01тн « аЬя(-10.01) « "1п"; геснгп О; 2. Функция не может быть встраиваемой, поскольку содержит цикл Гог. Боль- шинство компиляторов не поддерживает встраиваемые функции с циклами. 2.7 1.
()1пс1це(е <Еоясгеат> ивфпО патеврасе ясс(; ссс(ег1пе 912Е 10 Объявление класса влас)< для символов с1авв в'сас). ( с[таг яЬсК[31ЕЕ); У/ содержит стек 1пп сояг О индекс вершины стека рпЬ11с: всасК () ( сов = О; чоЫ рцяЬ(сЬаг сЫ ! 1г (воя=.=31ЕЕ) ( сопл « "Стек полон"; гесцгп; ) ягс)с[соя)=сЬр Гоя++г 1 Самоучитель сваг рор ( ) 1г (воз==О) соог « "Стек пуст"; геппгп 0; !! возврат нуля при пустом стеке воз--) геспгп згсК[Гоз); 1пс па1п () образование двух, автоматически инипиализируемых, стеков всасК з1, в2; 1пс з1.ризЬ( 'а'); з2.рцзЬ('х'); 91.роза( Ъ )ю' з2.рпзЬ('у') ' з1.риза ( 'с'); з2.рпзЛ('г')' Сог(1=О; 1<3; 1+в) соуп « "символ из стека з1:" « з1.рор() « в ~п~~у Еог(1=Ор 1<3; 1++) сопл « "символ иэ стека з2: " « в2.рор() « "1п"; геспгп Ор 2.