Г. Шилтд - Самоучитель C++ (DJVU) (1114955), страница 83
Текст из файла (страница 83)
нее)со (з, 1ов з з ьео); 1Е (! 1п.лоос(() ) ге пгп 1; 1п.дев(сЬ); 1Х( ! 1п.уосс(() ) гегигп 1; сопл « сЬ| 1г.с1ове(); 1г ( ' 1п уооб() ) геспгп 1 ° гегпгп О; 1Ь. // Перестановка местами символов в файле с контролем онибок багз пс1ис(е <фовТ геазл> (]1пс1пс(е <йв~геазл> ив1пд пагзеврасе егс(; 1пГ лзафп(1пг агдс, с)заг +агозт[] ) ( 1г(атос!=2) соп. « "перестановка: <имя файла>1п"з гегпгп 1 ) // Открытие файла для ввода/вывода ГвГгеазлуо (аг()зг[ 1], 1ов:: 1п ] 1ое .": опг ' уов: с Ьупагу); тй(11о) ( сопс « "Файл открыть невоэможно1п"; геспгп 1; с)заг с)з1, сЬ2; 1опц з; аког(1=0; !1о.ео1(); 1е=2) з.о нее)со(1, 1ов::Ьес) з з ~ ( 11о.ооос(()) гегпгп 1; з.о. цеС (с)з1); 11 (1о.еоГ(),' сопгфппе; 1о.се~(с)з2); 1г (! 1о, ооос( ( ) ) геспгп 1; Приложение В. Ответы на вопросы и решения упражнений б05 йх (йо. еох() ) сопсйппе; 1о.вее)сд (1, 1ов::Ьед); 1Г (! 1о.
доос(() ) хеспхп 1; 1о.рпх (сЬ2); 1х ( . '1о.доос(() ) хеспхп 1; 1о, рпх (сЬ1); 11 ()1о.доос(() ) хеспхп 1; 1о. с1ояе()' 1Г ( ! 1о.доос(()) хе0пхп 1; хепихп 0; Проверка усвоения материала главы 9 1, ()1пс1сс)е <1овХхеам> ияйпд пашеярасе ясо; овххеав~ айаЬв (овСхеат авххеат) ( яснее « '~"' « '1х' « вХхеат.ыйсШ~(20); хеспхп ясхеавн 1пс ва1п () сопя « ~аЬя « "1)роверка1п"; хеспхп 0; 2.
()1пс1ис(е <йовХхеа~п> ()йпс1ис)е <сссуре> пяйпд папуасе яЫ; 1ясхеа~н аГ1пба1рЬа (1вххеат авххеат) ( сЬах сЬ с)о ( анхел,дес(сЬ): ) ыМ1е (! 1ва1рЬа (сЬ) ); хеспхп ясхеахн Самоучитель С++ б06 1п( вафп () ( сваг я~к[80]) сфп » Г1пс[а1рйа » яск; сон~ << ясг << "'~п"„ геснгп 0; 3. 1! Копирование файла и сиена регистра букв ()1по1нде <1озкхеап> ()1пс1нс(е <1зСкекп> Ипс1нс[е <ссвуре> някпд патеярасе зтс(; 1пс та1п(1пс амадо, сЬак *акдаш[]) ( спал сЫ Л (алдс!=3) ( сонс « "Копирование <истонник> <целевой файл>1п"; те~илп 1; хйзтгеатфп(агдам[1] ) ) 1~ (! 1п) ( сон~ << "Файл ввода открыть невозможно~п") ге~цгп 1; ойзКхеат оШ (ахут[2]); з.й(!он~) соус « "Файл вывода открыть невозможно~в"; лесилл 1; чМ1е (! 1п.еой() ) ( сЬ - 1п.де1(); 1' ((1п.еой() ) Ы (1з1оиег(оЫ ) сЬ = вонррек(сЫ; е1яе сЬ = во1оыег(сЫ; он~.рн~(сЬ); 1п.
с1ояе (); онс. стояе(); Лриложенив 8. Ответы на вопросы и решения упражнений геГпгп О; 4. // Подсчет букв СС1пс1пс1е <1ов С геазп> ()1пс1Ме <йвстеалз> ()1пс1пс(е <сссуре> цв1пц пазкеврасе втк(; 1п а1р)за (26); ~п(. лзауп (зп(. агдс, сЬат *агдч()) с?зах с)з; 16 (алдс! =2) ( соис « "подсчет: <имя Файла>~п"з текцтп 1; з.гвТкеазп зп(акпзт(1) ) з 1й()1п) ( соззс « "Файл ввода открыть невозможно1п"з тесцтп 1; Инициаззизация массива а1р)за () зпс1) бок(з.=О; з<26з 1.з+) а1р)за (з.) = О; ъй11Е (! з.П,ЕОГ() ) ( с)з = 1п.дег(); 11(1ва1р)за(с)з)) ( // если найдена буква, считаем ее с)з = Сопррек (с)з)„ а1р)за(с)з — 'А')з-з.з 1~ 'А' — 'А' == О, 'В' — 'А' == 1, и т.
д. !/ Вывод на экран результата йок (1=Оз 1<26; 1++) ( соне « (с)зал) ('А' + 1) « ": " « а1р)за (1] << '~п'з з и, с1ове (); тесззгп О; Самоучитель С+~ бОЯ 5а. !! Копирование файла и смена регистра букв с контролем ошибок 41пс1пое <1оввгеатп> ()1пс1иае <твтгеат> ()1пс1пс(е <ссгуре> ия[пд пашеврасе вьг); 1пт ша1п(1пг агдс, с)таг *агдв[)) ( сваг с)и 1й(агдс!=3) сопс « "Копирование <откуда> <куда>1п"; гебпгп 1; 1Гяггеаш 1п(агду[1!); [1(! 1п) ( соус « "Файл ввода открыть невозможно'1п"; геспгп 1; оГ яггеатоп~(агдт[2)',; тй'(!опг) ( соиь « " Файл вывода открыть невозможно1п"; гесигп 1; и)т11е ( ! 1п.
ео~ () ) сп = 1п.деь(); 1й ( ! 1п. доо<)() аа !1п.еоГ ()) хесвгп 1; 1Й ()1п.еоГ() ) ( 1й (1а1оиег(с)т) ) сЬ = ~опррег(с)т); е1яе сп = го1оюег (с) ); оп~ . рог (с)т) р 1Г((овг.дооо() ) гесигп 1р 1п.с1ове()) оцг.с1ове()! 1й (!1п.доос)() аа .'опг.дооо[)) гесигп 1; гесвгп О; 5Ь. // Подсчст букв с контролем ошибок Шпс)ис)е <тоасгеаш> ()1пс1оое <йвСгеат> Приложение В. Ответы нв вопросы и решения упражнений ()1пс1пг(е <сссуре> пв(пя пагпеврасе асс(г (пг а(рпа [26); )п( гаауп(1пс атас, сваг *агдч() ) с'ггаг с'и; 16 (асс! =2) ( сопс « подсчет: <ге4л Файла>~п"; тесвтп 1; 16вСкеага 1п(агдч[1)); 1Г (! 1п) сочв « "Файн ввода открыть невозможно~п"; хеввгп ); !1 Инициализация массива а1рпа[) 1пс 1; Хот(1=0; (<26; 1++) а1рпа[1) = 0; и)т11е(!1п,еой()) ( сЬ = 1п.дев(); 16(!1п,лоос)() аа !1п,еаза ()) тебв гп 1; 1Е(1ва1р)та(сп)) ( !! если найдена буква, подсчитаем ее сЬ = гопррег(сй)' а1рйа[сп — 'й')++г О 'й' — 'д' 'В' — 'А' ==- 1, и г.
д. !! Вывод на экран результата аког(1=0' 1<26г 1++) ( сонг « (спат) ('д' ~ 1) << "; " «а1рЬа[1) « '~п'г ) 1п. с1ове (); 1й( р[п,доог(() ) тевшп 1; тебпкп О; 6. Для установки указателя чтения [яе() используется функция вее)(В0. Для установки указателя записи (рв$) используется функция вееКрО. приложение В. Ответы нз вопросы и решения уггражнений о г зггеагк.иг1ге ( (с)таг*) аопЬапг(, з1зео1 (1пг) ) ) зггеага.иг1 е ( (с(таг*) 11соя~, з1геоЕ (г(оиЬ1е) ) ) чоЫ 1пчепГогу:: гегг1ече (1зггеага азсгеага) ( зггеавг.геас((1Гега, 5?2Е)г .яггеагк.геаг(((сваг *) 11опЬапс), з1гео1'(1пг)); .зТгеагв.
геаг(((с(таг ') г1сояс, з1геоЕ(с(оиЬ1е) ); 1п () Гясгеап 1пч("1пч", 1оз::оис 1 1оя::Ь1пагу) 1пс 1; 1пчеп огур11егз("плоскогубцы", 12, 4. 95); 1пчепсогу )гагпгкегз ("молоткн", 5, 9. 45) г 1пчепгогу игепсЬез("ключи", 22, 13. 90); 1пчепоогу Гевгр(""„ О, 0.0)' И (! 1пч) ( сопЬ « "Файл для вывода открыть невозмоино~п"; ге' птп 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 (с)опЬ1е) ), 1озг:Ьяд) гепр.гегг1ече(1пч); соцс « сепр; ) нп11е (1пч.0оос(() ) р Самоучитепь С++ 1пв.с1озе (); тесилтт От ГЛАВА 10 Повторение пройденного 1. ()1пс1ибе <1оз~веаттт> пззпд патпеярасе яЫ; озСлеатпй.яеьяс1 (озвтеатпЫяьлеаш) звкеатп. зелт"(1оз.": зс1еппН1с1 1оз.": ирревсазе); ле~цтп яслеатп; 1п~ птазп () ( с)оиЫе й = 123.23; соцб « яепяст « ~; сов~ « ''тп') левцтп О; 2. т'/ Копирование файла и ттреобразование табуляций в пробелы ()1пс1ит)е <1озВтеатп> ()1пс1пе(е <1зТхеадт> ця1пд паптеярасе яЫ; 1пс тпа1п(1пс алдс, с)тат авдч[)) ( 11(атдс(=3) ( соттс « "Копирование: <ввод> <вывод>~п"т лепалл 1; 1Гзвтеатп 1п(атдтт(1))т 1Е (! з.п) ( совв « "Файл ввода открыть невозьтожно~п" т леьцлп 1; Приложение 8.
Ответы нв вопросы и решения упражнений 6 13 о1я~геат ооТ (агу г [2] ) ) 1г(!опг) сои( « "Файл вывода открыть невозможно1п"; ге1пгп 1; с]тат сМ 1пт 1 = 8; в'п]1е (! 1п. еог" () ) ( 1п.сел(сЬ); 1й(с)1=='1Г.') аког(; 1>0; 1 --) опт.рпГ(' ); е1яе опк.рос (сЫ; Ы(1==-1 1 1 сЬ==*'~п') 1 = 8; 1 г 1п.с1ояе()' оп~.с1ояе(); гсгигп О; 3. О Поиск слова в файле (]1пс1иг(е <1ояггеаш> (]1пс1пйе <г яГгеатп> ()1пс1иое <сясгфпц> пяфпд патеярасе ягб; 1пг пайп(1пт агдс, с)таг *ащч[)) 'К(агос)=3) ( сопл « "Поиск: <файл> <слово>~п"; геппгп 1; 1Гятгеагк хп(аьуч[1]); 1~(!1г) ( соил « "Файл ввода открыть невозможно~о"; геьпгп 1; сваг явг[255]; фпг соппг = О; ып11е(1 1п.еог () ) ( 1тт » ясгг 1Г ( !яггсзлр(ягг, агсч[2])) оопп~++; Саноучлтель сопс « агут(21 « " найдено " « сонно; сопе « " раз.
~п"; ап.с1озе(); песиков 0; 4. Искомой инструкцией является следующая: опя. зее)ср (234, аоз::Ьед)( 5. Такими функциями являются п)Фа(ео, роом(), еоК(), Ха(10 и ЬадО. 6. Ввод/вывод С++ обеспечивает возможность работы с создаваемыми вами классами. Упражнения 10.2 () 1пс1ис(е <1озЕ ареал> яя?пд патезрасе з~с(; с1аяя гпмнп ( рпЬ11с.* )пя пзл(1пе х) (1 = х; Ы.г=яа1 ~оЫ зЬоыпша() ( сопя << 1 << '~п'; ) с1азя оитпсх: риЬ)(с пшп ( рпЬ11с: ои~Ьех(1пе и): плт~(п) () чоЫ яЬожпптпО ( сои? «Ьех «1 « '~п"; ) с1аяя онсося: рпЬ1?с галя ( рпЬ11с: опсосЕ(1п?.и): ппп~(п) чоЫ яЬожпшпО (' сон( «ос? «( « '1п') ?пс аъазп() ( оясосс о(10) у опспех Ь (20) > о.
зЬомппз~(); Ь. зЬоипжп( ); йриложение В. Ответы нп аолросы и решения упражнений 615 тепптп 0; 2. () 1пс1псе <хозптеюп> пя1пц папеярасе япо; с1аяя с(ъзь ( рпЫгс: йопЫе Й; с(ъзс (боиЫе 1) (с( — йп ) юг(иа1 ъ'оЫ апач п~зпе() ( сопя « "Время движения со скоростью 60 миль/час:"; сопс « й / 60 « '~п') с1аяя тестгс: рпЫгс с)гяс ( ри)п1хс: п~епп1с(с(оп)о1е ~): с(гяс(т) () воЫ апач П)зпе() ( сопя « "Время движения со скоростью 100 км/нас:"1 сочв « с( ! 100 « '1п'; гпс патп() ( йзяс ~р, тпр11(88. О) юес пгс )~рЬ ( Й В ); р = йтрп; р -> Сдаст П1п~е ( ) 1 р = а)срЬ; р -> Птах сто (,) 1 песппп 0; 2. По определению в абстрактном классе содержится, по крайней мере, одна чистая виртуальная функция.
Это означает, что в классе отсутствует тело этой функции. Таким образом, создание объекта абстрактного класса невозможно, поскольку определение класса неполно. Самоучитель С++ 6)6 3. При вызове функции йпсО относительно класса дептед1 используется функция й(всО из класса Ьаве. Так происходит потому, что виртуальные функции имеют иерархическую структуру. 1.
// Демонстрация возможностей виртуальных функций ()1пс1пс(е <фоясгеалс> (с 1пс1цс1е <сясс111Ь> ияьпд патеярасе асс(; 11яп () ( Ьеаб = Са11 = пехС = НЦ1.Ь; утпсца1 чоЫ япоге (фпе 1) = Е; чфтппа1 цзп ХЕСтфЕЧЕ () = (); Создание списка типа очередь с1аяя с)пепе: рпЬ11с 11яс риЬ11сс чоЫ ясопе (фпс 1) ) 1пс гепгтече (); чотй с(цеце:: ясоне (1пй 1) 11БС *1пе1пг фсесс = пеи с(пепе; 1д (!тает) ( сопс « "схсибка выделения памяти1п"; ех1п(1) у 1сесс — > ппп~ = 1; // Добавление элемента в конец списка 11 (<а11) са11 -> пехс = тсеп; са11 = фсею; 1 сесл -> пехс = ыцьь; 1Х(!аеас() Ьеас( = са11; с1аяя 11яп ( рпЬ11с: 11яс *Ьеас(; 11яс *са11; 1(яс *пехс; л.пс псла ' // указатель на начало списка // указатель на конец списка указатель на следуюжий элемент списка число для хранения Лриложение В.
Ответы на вопросы и решения упражнений б(7 1пс с)иене:: гегг1ече() 1пг 11яс *Р; 11 ( аеас)) ( сонг « "Список пустын"; гесигп О; Удаление элемента из начала списка = )теас( -> ппш; р = Ьеай; аеас( = ).еас1 -> пехг; ое1есе Р' геппгп Создание списка типа стек с1аяя ягас)с: рпЬ11с 11яг РпЫ1с: чо1а аСоге (1пс 1); 1пг геГг1ече(); чоЫ згас)с:: зГоге (1пГ 1) ( 11яг '1геш1 1геш = пеи ягас)с; 1Г(!1гет) сонг « "Ошибка выделения памяти1п"; ех1г(1)) 1сеш -> псш = Внесение элемента в начало списка Л (аеас)) ггеш -> пехг = аеас); аеас( = 1геш; 1й (!Га11) га11 = Ьеай; 1пп айно)с:: гЕГг1ЕУЕ ( ) гпг 11яс *р; 1Г ( ()аеас)) сопя « "Список пустын"; С++ Самоучитель гегпгп О р Удаление элемента из начала списка = аеас( -> пцлп р = )1еас(; )теас( = йенс( -> пехг; с(е1есе р; гегцгп Создание отсортированного списка с1аяя яогсег(: рцо11с 11яс ( рц)з11с: уо1с( я~оке (1пс 1); 1пс гегг1ече (); чоЫ яог~ес):: ягоге (1пс 1) 11яс *1гетц 11яс *р, *р2; 1яеп~ = пеи яогсес(; 1Й (! 1гепд ( соп1 <( "Ощибка выделения памяти1п"г ех1ь(1.)е 1сел~ -> пцп~ = 1; не первьгл элемент // новый первый элемент р = р -> пехг; 1г(.'р) ( // идем в конец 11 (са11) са11 -> пехс са11 ((егп -> пех( = Ь(()(.(.; 1сещ; Поиск места внесения следующего элемента списка р = йеаа; р2 = М'Лп; Мп.1е (р) ( ~/ идем в середину 1Г(р->пил~> 1) ( 1сегп -> пехв = р; 1Й(р2) р2 -> пехс = 1гещ; 1Е (р==Ьеас() Пенс) = 1гещ; Ьгеа).; Приложение В.
Ответы на вопросы и решения упражнений 619 1Е(! Ьеас(] // первый элемент Ьеас1 = (гепт; 1пс зогсес(:: геггйеъе () ( 1пс 11сг ~Р~ 1й (! Ьеас() ( сои= « "Список пуст1,п"; гесигп 0; удаление элемента из начала списка = Ьеас) -> пивц р = Ьеас); Ьеас) = Ьеас) -> пех1; с(е1еге р; ге(игп 1у 1цЬ свайп() ( 1 1 во *р' // Демонстрация очереди С(иеие с( оЬ; р — Йя ОЬ; // указывает на очередь р -> впоге (1); р -> всоге (2); р -> вгоге (3); соиг « "Очередь: соиь « р -> гесгйече ( ) соис «р -> геЬгйеуе(), соис « р -> гедгйеуе (); соип « '1П'~ Демонстрация стека апас)с в оЬ; р .= йз оЬ! // указывает на стек р -> всоге (1); р -> зпоге (2); р -> аЬоге (3); соис « "Стек: г соил « р -> ГЕСг1ЕУЕ () 1 Самоучитель 620 сои1 « р -> гет.г1ече(]," соот.