§ 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. Тестирование. |