Название: Искусственный интеллект. Строки, контекст и волны на Паскале
Автор: Сергей Соболенко
Издательство: Издательские решения
Жанр: Компьютеры: прочее
isbn: 9785449632814
isbn:
– ведь мы помним, что функция Pos находит первое совпадение подстроки, а в начале строки пробела у нас нет. Так в S2 попадет слово «Мама».
Если же нам требуется скопировать текст, следующий за первым пробелом, эта процедура будет выглядеть несколько сложнее:
Здесь, в качестве позиции для отсчета мы берем место нахождения в строке первого пробела и копируем следующие за ним символы за минусом числа символов, следующих до пробела включительно. Проверить верность этой формулы можно в следующей программе:
Илл. 6. Копирование фрагмента строки с помощью функций Copy и Pos, с целью получения части текста, следующего за первым словом в строке.
Результат – можно увидеть на экране:
Илл. 7. Результат работы программы копирования фрагмента текста.
Также, предположим, что нам необходимо скопировать последнее слово из строки. В данном случае, поскольку функция «Pos» нам не поможет, придется воспользоваться циклом, чтобы «вручную» установить место нахождения последнего пробела.
Контролировать конкретный символ строки можно, используя числовое значение индекса символа в строке, при этом числовой индекс указывается в квадратных скобках S [n].
Так, в упомянутой строке S [1] =«М», S [2] =«а», s [3] =«м» и т. д. Зная общее число символов с помощью функции length (S) мы можем перебором достигнуть нужного нам символа в цикле и после произвести нужную операцию. В следующей программе мы получаем последнее слово, благодаря перебору символов с «хвоста», уменьшая значение, полученное из длины строки оператором Dec (i). Так же, на всякий случай мы уточняем условие выхода из цикла в случае, если пробел так и не будет достигнут (i <1).
Илл. 8. Копирование последнего слова из фрагмента текста с использованием цикла Repeat и строкового индекса.
Результат удовлетворяет ожиданиям.
Илл. 9. Итог работы программы (илл. 8).
Почему же в примерах мы использовали английскую транскрипцию? Очень просто, – поскольку по умолчанию в компиляторе TMT Pascal используется кодировка Win, и та же программа с русским предложением внутри даст непонятный итог:
Илл.10. Пример неудачного использования программы по работе с текстом, – из-за несовпадения кодировок ввода (Win) и вывода (DOS) удовлетворительный результат не может быть получен.
Так он будет выглядеть, несмотря на то, что формальных ошибок мы не допускали:
Илл. 11. Так выглядит фиаско при несовпадении кодировок.
И это ничто иное как слово «раму», не переведенное в Dos-кодировку.
Похожий, СКАЧАТЬ