§ 9. Радковыя велічыні
9.6. Пераўтварэнне радкоў
Прыклад 9.14. Па правілах арфаграфіі новы сказ пачынаецца заўсёды з вялікай літары. Тэкставыя рэдактары аўтаматызуюць увод вялікай літары, г. зн. калі карыстальнік напісаў першае слова ў сказе з малой літары, то яна замяняецца на вялікую. Напісаць праграму, якая выконвае такую аўтазамену для тэксту, набранага лацінскімі літарамі. Лічыць, што тэкст набраны карэктна і пасля кожнага знака прыпынку, які азначае канец сказа («.», «!», «?»), стаіць прабел. Этапы выканання задання I. Зыходныя даныя: пераменная st (уведзены радок). II. Вынік: пераўтвораны радок. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 4.1. Калі бягучы сімвал з’яўляецца сімвалам канца сказа, то трэба замяніць сімвал, які стаіць на дзве пазіцыі далей, калі гэты сімвал — малая літара. 5. Вывад выніку. IV. Апісанне пераменных: st – string, n – int. Ва ўсіх тэкставых рэдактарах рэалізавана функцыя Заменить. Пры выкананні гэтай каманды некаторыя сімвалы з радка выдаляюцца, а замест іх устаўляюцца іншыя сімвалы. Прыклад 9.15. Напісаць праграму, якая заменіць у тэксце кожную лічбу 2 словам «two». Этапы выканання задання I. Зыходныя даныя: пераменная st (уведзены тэкст). II. Вынік: пераўтвораны тэкст III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 2.1. Калі бягучы сімвал тэксту «2», то выдаляем яго і ўстаўляем падрадок «two». . 3. Вывад выніку. IV. Апісанне пераменных: st – string, i – int. Пры правільным наборы камп’ютарнага тэксту паміж любымі двума словамі павінен быць роўна адзін прабел. Аднак часам выпадкова ўстаўляюць некалькі прабелаў. У гэтым выпадку Word падкрэслівае прабелы блакітнай хвалістай лініяй (прыклад 9.16). Прыклад 9.17. Напісаць праграму, якая правярае правільнасць расстаноўкі прабелаў у тэксце і, калі паміж словамі больш за адзін прабел, — выдаляе лішнія. Этапы выканання задання I. Зыходныя даныя: пераменная st (уведзены тэкст). II. Вынік: пераўтвораны тэкст. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 3.1. Калі абодва суседнія сімвалы з’яўляюцца прабеламі, то выдалім адзін з іх. Суседнія сімвалы маюць індэксы, якія адрозніваюцца на адзін: i і i + 1. 4. Вывад выніку. VI. Апісанне пераменных: st – string, i– int. Прыклад 9.18. Напісаць праграму, якая правярае правільнасць расстаноўкі прабелаў вакол працяжніка. Калі прабелы прапушчаны, то ўстаўляе іх. Мяркуецца, што ў тэксце няма слоў, якія пішуцца праз злучок, двух знакаў «-» запар і лішніх прабелаў. Этапы выканання задання I. Зыходныя даныя: пераменная st (уведзены тэкст). II. Вынік: словы-паліндромы III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 2.1. Калі суседні справа сімвал (i + 1) не прабел, то ўстаўляем прабел. 3. Пераходзім да наступнага сімвала. IV. Апісанне пераменных: st – string, i– int. Прыклад 9.19. Напісаць праграму, якая выведзе словы-паліндромы [3] (словы, якія аднолькава чытаюцца злева направа і справа налева), што ўваходзяць у зададзены тэкст. Словы ў тэксце могуць быць падзелены адным ці некалькімі прабеламі. Прабелы могуць быць у пачатку і ў канцы тэксту. Этапы выканання задання I. Зыходныя даныя: пераменная st (уведзены тэкст). II. Вынік: словы-паліндромы. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 4.1. Выдалім прабелы ў пачатку радка. Вылучым першае слова з радка. 5. Апішам тры дадатковыя алгарытмы. 5.1. Функцыю DelSpace для выдалення прабелаў у пачатку радка. Прабелы выдаляюцца з радка толькі тады, калі ён не пусты. Калі прабелаў у пачатку радка няма, то функцыя не зменіць зыходны радок. 6. Вывад паведамлення «няма паліндромаў» у выпадку, калі значэнне p засталося false. IV. Апісанне пераменных: st, sl – string, i, n – int, p - bool.[3] В мире интересных слов. Палиндромы. http://www.tramvision.ru/words/pal.htm. (дата доступу: 28.07.2020) |
Прыклад 9.14. V. Праграма:
VI. Тэсціраванне [2]. Прыклад 9.15. V. Праграма:
VI. Тэсціраванне. VII. Аналіз выніку. Замест двух функцый erase і insert можна выкарыстаць функцыю replace. st.replace(i, 1, "two"); Прыклад 9.16. Вылучэнне лішніх прабелаў у Word. Прыклад 9.17. V. Праграма:
VI. Тэсціраванне. Разгледзім падрабязней сітуацыю, калі ў тэксце стаяць запар два ці больш прабелаў. У прыкладзе такая сітуацыя сустракаецца паміж словамі «правільным» і «наборы». Умова (st[i] == ' ' && st[i + 1] == ' ') для i = 14 выканаецца, і прабел, які стаіць на 14-м месцы, выдаліцца. Тады прабел, які стаіць на месцы 15, зрушыцца ўлева і атрымае нумар 14. Пры наступным выкананні цела цыкла зноў выдаліцца прабел на месцы 14, а прабел на месцы 15 зрушыцца ўлева. Пераход на наступны сімвал ажыццявіцца толькі тады, калі ўмова (st[i] == ' ' && st[i + 1] == ' ') будзе няправільнай — паміж словамі застанецца толькі адзін прабел. Прыклад 9.18. V. Праграма:
VI. Тэсціраванне. Увядзіце тэкст «Жизнь прожить — не поле перейти. Родимая сторона — мать, чужая — мачеха. Сделал дело — гуляй смело.» Вынік: VII. Аналіз выніку. У прыкладзе сустракаюцца ўсе чатыры магчымыя сітуацыі: прабелаў няма ні злева, ні справа ад працяжніка; прабел толькі злева; прабел толькі справа; прабелы з двух бакоў. У выніку выканання ўсе прабелы расстаўлены правільна. Прыклад 9.19. V. Праграма:
VI. Тэсціраванне. Увядзіце тэкст: «На берегу стоит шалаш из камыша. Для трафаретной печати предназначен ротатор, или мимеограф. Пшеничная лепёшка наан является блюдом индийской национальной кухни». Вынік: [2] Куприн, А. И. Гранатовый браслет http:ilibrary.ru/text/1022/p.7/index.html (дата доступу: 28.07.2020). |