Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
символ_литер величины.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
68.1 Кб
Скачать

5. Работа с отдельными символами

С каждым из символов, составляющих литерную величину, можно работать отдельно. Символы литерной величины всегда пронумерованы, начиная с единицы: номер первого символа равен 1, номер последнего — длине литерной величины.

Обратиться к отдельному символу можно по тем же правилам, что и к элементу таблицы: надо указать номер символа в квадратных скобках после имени величины. Номер символа в строке называется его индексом.

Например, после выполнения команды t: ="информатика" значение t можно представить в виде такой таблицы:

лит t

и

н

ф

о

р

м

a

Т

И

к

а

1 2 3 4 5 6 7 8 9 10 11

Здесь t[l]="и", t[2]="н", t[11]=”a”

6. Метод посимвольной обработки

Многие задачи сводятся к посимвольной обработке заданной литерной величины. Обычно в таких задачах нужно по одному перебрать все символы, входящие в строку, и выполнить с каждым из них какие-то дей­ствия. По этой схеме построен, например, алгоритм вертикальная печать.

Вот как выглядит общая схема алгоритма посимвольной обработки:

нц для i от 1 до длин(s)

| обработка (s[i])

кц

Метод посимвольной обработки — это не что иное, как метод однопроходных алгоритмов, примененный к литерным величинам.

Задача 1. Вывести значение литерной величины по вертикали: по одной букве в каждой строчке экрана.

Чтобы сделать это, переберем все символы заданной величины, начиная с первого, и будем выводить каждый из них с новой строки. Для организации перебора используем цикл для.

алг вертикальная печать (арг лит s)

дано |

надо | строка s напечатана по вертикали

нач цел i

нц для i от 1 до длин(s)

вывод нс, s[i]

кон

Задача 2. Сколько раз в строке встречается символ х

алг цел количество символов (арг сим х,арг лит а)

надо| знач = количество символов х в строке а

нач цел i

знач :=0

нц для i от 1 до длин (а)

если a[i]=х

то знач := знач + 1

все

кц

кон

Чтобы с помощью этого алгоритма узнать общее количество k восклицательных и вопросительных знаков в строке b, достаточно написать команду присваивания:

k:= количество символов("!",b) + количество символов("?",b)

Задача 3. Определить долю пробелов в строке

Чтобы определить долю пробелов в строке, надо ко­личество пробелов поделить на общее количество сим-волов (длину строки). Воспользуемся для подсчета ко­личества пробелов алгоритмом, рассмотренным в задаче 2.

алг вещ доля пробелов (арг лит а)

дано | длин (а) > 0

надо | знач = доля пробелов в строке а

нач

знач := количество символов (" ",а)/ длин(а)

кон

7. Замена одного символа на другой

Обратившись к отдельному символу литерной величины, можно не только проанализировать, но и изменить его, точно так же, как можно изменить значение одного элемента простой таблицы.

Например, если выполнить серию команд t:="слон"; t[2]:=”т”,

то в результате литерная величина t получит значение стон.

Используя этот прием, можно, например, выполнить замену одного символа на другой во всей строке.

алг замена (арг сим х,у, арг рез лит а)

надо |в строке а все символы х заменены на у

нач цел i

нц для i от 1 до длин (а)

если a[i]=х

то a[i]:=у

все

кц

кон

В алгоритме величина а является одновременно аргументом и результатом (отсюда и запись арг рез лит а). Пусть, например,

b = "Понял. Немедленно выезжаю". Тогда после вызова

замена(".", "!", b) получим:

b = "Понял! Немедленно выезжаю!"