§ 9. Радковыя велічыні
9.7. Пераўтварэнне радкоў у лікі і лікаў у радкі
Лікавыя даныя выкарыстоўваюцца для выканання арыфметычных аперацый. Калі сімвалы лічбаў запісаны ў радковую пераменную, то выконваць вылічальныя дзеянні з імі нельга. Але можна ператвараць радкі, якія змяшчаюць сімвалы лічбаў, у лікі (прыклад 9.20). У радковых пераменных лёгка выконваць такія аперацыі, як выдаленне, устаўка ці замена сімвала. Устаўка, замена ці выдаленне лічбы з ліку выконваюцца больш складана (задача пра вылучэнне лічбаў з ліку разглядалася ў § 8 — гл. прыклад 8.17). Пры неабходнасці лік можна пераўтварыць у радок, выканаць патрэбныя дзеянні і пераўтварыць радок назад у лік.. Прыклад 9.21. Напісаць праграму, якая правярае, ці з’яўляецца дадзены тэкст запісам ліку. Калі так, то знайсці суму лічбаў дадзенага ліку, інакш вывесці адпаведнае паведамленне. Этапы выканання задання I. Зыходныя даныя: пераменная st (уведзены тэкст). II. Вынік: сума лічбаў або паведамленне пра тое, што гэта не лік. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 5.1. Калі бягучы сімвал тэксту — лічба, то пераўтвараем яго ў лік, дабаўляем лік да сумы. Сімвал радка з’яўляецца лічбай, калі выконваецца ўмова(st[i] >= '0' && st[i] <= '9'). 6. Калі пасля цыкла k < n, то тэкст не з’яўляецца запісам ліку. Інакш выводзім суму лічбаў. IV. Апісанне пераменных: st – string, n, s, k – int. Прыклад 9.22*. Напісаць праграму, якая раскрывае дужкі ў лікавым выразе і вылічвае яго значэнне. Выраз мае выгляд a + b + c +… і ўводзіцца як радок. Замест a, b і c — сімвалы лічбаў, якія ўтвараюць цэлы лік (колькасць лічбаў у кожным з іх не большая за дзевяць, колькасць складаемых — адвольная). Вывесці значэнне выразу. Напрыклад, для выразу 5 + 17 + 8 павінны атрымаць 30. Этапы выканання задання I. Зыходныя даныя: пераменная st (тэкст). II. Вынік: лікавае значэнне выразу. III. Алгарытм рашэння задачы. 1. Увод зыходных даных 2.1. Знойдзем сімвал «+», сімвалы да яго скапіруем у пераменную s1. 3. Вывад выніку. IV. Апісанне пераменных: st, s1, – string, x, s – int. |
Прыклад 9.20. У табліцы прыведзены каманды для пераўтварэння.
Функцыі пераўтварэння радковых велічынь тыпу string у лікавыя з’явіліся толькі ў 11 стандарце C++. Аднак у Code:: Bloks яны падтрымліваюцца толькі з 14-й версіі стандарту. Для падключэння кампілятара з падтрымкай гэтага стандарту неабходна выканаць каманду Settings → Compiler… Прыклад 9.21. V. Праграма:
VI. Тэсціраванне. Праверку таго, ці з’яўляецца сімвал лічбай, можна выканаць некалькімі рознымі спосабамі. Гэта можна зрабіць аналагічна таму, як у прыкладзе 9.14 выконвалася праверка знакаў прыпынку. Для гэтага трэба стварыць радок і пералічыць у ім усе лічбы — z = ''0123456789''; Функцыі пераўтварэння ў якасці параметра прымаюць толькі радок, таму ў праграме прыйшлося прысвоіць радку z значэнне бягучага сімвала. Для атрымання лікавага значэння сімвала лічбы можна паступіць па-іншаму:
У дадзеным выпадку пераменная z — розніца кодаў бягучай лічбы і лічбы 0. Паколькі лічбы ў табліцы размешчаны па парадку, то атрымаем лікавае значэнне сімвала лічбы. Прыклад 9.22. V. Праграма:
VI. Тэсціраванне. |