Занимательное программирование – игры с текстом. Дмитрий Юрьевич Усенков
Чтение книги онлайн.

Читать онлайн книгу Занимательное программирование – игры с текстом - Дмитрий Юрьевич Усенков страница 2

СКАЧАТЬ с единицы.)

      Например, если мы определили строковую переменную оператором

      var stroka : string[10];

      и записали в нее строку 'Привет!', то оператор

      writeln(stroka[1]);

      выведет на экран символ 'П', а оператор

      writeln(stroka[7]);

      выведет символ восклицательного знака.

      Соответственно, одномерный массив строк можно аналогичным образом рассматривать как двумерный массив символов, двумерный массив строк – как трехмерный массив символов и т.д.

      Эта замечательная возможность делает ненужным использование функций извлечения символа из строки (типа MID$(<имя строки>,<позиция символа>,1) в Бейсике), поскольку для получения нужного символа достаточно просто обратиться к нему напрямую. Насколько это упрощает решение некоторых задач на работу со строками, мы увидим, когда перейдем к решению таких задач.

      И наконец, завершая теоретический экскурс в символьные и строковые типы данных, перечислим некоторые имеющиеся в Паскале стандартные функции и процедуры для работы с символами и строками (информацию о них обычно можно найти в Help’е к используемой системе программирования, мы же будем рассматривать популярную в школьной практике среду программирования Pascal ABC.Net).

      При использовании этих функций и процедур необходимо помнить следующее:

      – функции возвращают некоторое значение, которое нужно куда-то записать или как-то использовать, поэтому функцию надо записывать или в операторе присваивания (например: d := Length(s); ), или, скажем, в операторе вывода на экран (writeln(Length(s)); );

      – процедуры, в отличие от функций, сами по себе не возвращают значений, а изменяют значение некоторых заданных в них параметров (аргументов), поэтому в составе оператора присваивания или вывода на экран их записывать нельзя. Процедура записывается отдельным оператором, например: Delete(stroka,5,1); – правильная запись (из строки stroka удаляется один символ, стоящий в 5-й позиции), а stroka1 := Delete(stroka,5,1); – неправильная запись.

      А теперь перейдем, наконец, к решению задач.

      Задача 1

      Дана строка символов. Удалить из нее первый знак препинания.

      Наиболее простое решение: определить длину введенной строки, реализовать цикл перебора всех ее символов (с 1-го до последнего, имеющего номер, равный значению длины), каждый очередной символ сравнивать с каждым из возможных символов – знаков препинания («.», «,», «;», «!» и т.д.) и при выполнении этого условия каким-то способом убрать его из строки, а затем – прервать цикл просмотра символов.

      Реализуем эту идею на Паскале:

      Проанализируем этот листинг.

      1. Вводится строка и определяется ее длина dl (при помощи стандартной функции Lenght).

      2. СКАЧАТЬ