СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Строковые функции в Pascal

Категория: Информатика

Нажмите, чтобы узнать подробности

Карточка для работы

Просмотр содержимого документа
«Строковые функции в Pascal»

Строковые функции

length(s);  s — строковая переменная (тип string)

Пример:

s:='Мама мыла раму';

n:=length(s);

writeln('Количество букв в строке = ',n)

В данном примере на экране мы увидим число 14 (пробел — тоже символ)

copy (s, n, l);  s — переменная типа string, n —  номер символа с которого начинается подстрока (тип integer), l — количество символов в подстроке (тип integer).

Пример:

s:='Мама мыла раму';

subs:=copy(s, 6, 4);

writeln(subs);

В данном примере на экране мы увидим слово мыла (т.к. «м» — шестой символ строки s, и в подстроке мы выделяем 4 символа)

concat(s1, s2, …); — возвращает строку, являющуюся объединением строк, указанных при вызове функции.

Пример:

s1:='Мама ';

s2:='мыла ';

s3:='раму';

s:=concat(s1, s2, s3);

writeln(s);

На экране мы увидим строку: «Мама мыла раму»

delete(s, n, l); — удаляет из строки s её часть, которая начинается с символа с номером n и состоит из l символов

Пример:

s:='Мама мыла раму';

s:=delete(s, 6, 5);

writeln(subs);

В данном примере на экране мы увидим: «Мама раму» (удаляем 5 символов: 4 буквы и 1 пробел)



Задача

Написать программу, которая подсчитывает, сколько содержится цифр в строке.

Решение

Введем переменную n для хранения количества найденных цифр. В цикле будем извлекать каждый символ строки и находить его порядковый номер в таблице символов.

Известно, что символы цифр в этой таблице имеют порядковые номера от 48 (для нуля) до 57 (для девятки) включительно. Если номер очередного извлеченного из строки символа попадает в данный диапазон, значит перед нами цифра. В этом случае следует увеличить на единицу счетчик цифр, то есть переменную n.

var

s: string;

i, n, len: byte;

 

begin

readln(s);

len := length(s);

 

n := 0;

for i:=1 to len do

if (ord(s[i]) 47) and (ord(s[i]) 58) then

n := n + 1;

 

writeln(n);

end.

Задача

Подсчитать количество слов во введенной пользователем строке. Считаем, что слова разделяются исключительно одним пробелом, а первый и последний символы строки не являются пробелами.

Решение

Описание переменных:

str - строка;
len - длина строки;
count - счетчик слов в строке.

Алгоритм решения задачи:

  1. Измеряем длину введенной пользователем строки.

  2. Устанавливаем счетчик слов в значение 0.

  3. В цикле посимвольно перебираем строку. Если очередной символ является пробелом, увеличиваем счетчик слов.

  4. Поскольку в цикле не было учтено последнее слово (после него нет пробела), мы должны после цикла увеличить счетчик слов на единицу. Однако, если была введена пустая строка, то этого делать не надо. Поэтому перед увеличением счетчика добавляем проверку, что длина строки больше нуля.

Программа на языке Паскаль:

var

str: string;

len, count, i: integer;

 

begin

readln(str);

len := length(str);

count := 0;

 

for i := 0 to len do

if str[i] = ' ' then

count := count + 1;

if len 0 then

count := count + 1;

 

writeln(count);

end.

Задача

Удалить из строки все слова, длина которых меньше пяти символов. В строке не используются знаки препинания.

Решение

 

Алгоритм решения задачи: 

  1. Просматривать строку посимвольно (i), пока не будет достигнут ее конец (len).

  2. Длина очередного слова хранится в переменной (j). Если очередной символ является пробелом, то переменная сравнивается с числом 5.

  3. Если длина слова оказывается меньше пяти символов, то с помощью процедуры delete() оно удаляется.

  4. Переменная, обозначающая длину слова, должна обнуляться, когда очередной символ пробел.

  5. После удаления подстроки должна снова измеряться длина строки (len).

Программа на языке Паскаль: 

 

var

s: string;

len, i, j: integer;

begin

write('Input string: ');

readln(s);

len:= length(s);

 

i:= 1; {начинаем с первого символа в строке}

j:= 0; {сначала длина слова равна нулю}

while i=len do begin

if s[i] ' ' then begin {если очередной символ не пробел}

j:= j+1; {увеличиваем длину слова}

i:= i+1; {переходим к следующей букве}

end

else begin {если очередной символ пробел}

if j 5 then begin {если длина слова

delete(s,i-j,j+1); {вырезаем вместе с пробелом после слова}

len:= length(s);

i:= i-j; {i в начало на длину вырезанной подстроки}

j:= 0; {обнуляем длину слова}

end

else begin {если длина слова 5}

i:= i+1; {переходим к следующей букве}

j:= 0; {обнуляем длину слова}

end;

end;

end;

 

if j 5 then {если последнее слово

delete(s,i-j,j);

 

writeln(s);

 

readln

end.