Обработка строк, символов
Задания для самостоятельного выполнения: 1 Заменить в строке каждый символ-точка на символ-пробел. 2 Удалить из строки первый символ. 3 Удалить из строки второй символ. 4Удалить из строки третий символ. 5 Удалить из строки десятый символ. 6 Вставить символ a на вторую позицию в заданную строку. 7 Вставить символ a на k-ую позицию в заданную строку. 8 Найти количество четных цифр, содержащихся в строке. 9 Проверить, содержится ли в строке символ ‘!’? 10 Подсчитать, сколько раз содержится в строке каждый из символов ‘a‘, ’b’, ‘c’, ‘d’?
Примеры решения задач Пример1. Заменить в строке каждый символ a на символ b. Текст программы: var s:string; a,b:char; i,n:integer; Begin write(' строка s?... '); readln(s); write ('символы a,b?...' ); read(a,b); write( 'исходная строка:'); writeln(s); n:=length(s); for i:=1 to n do if s[i]=a then s[i]:=b; writeln( 'строка после замены символов:', s); end. Результаты выполнения программы: Исходная строка: ‘а роза упала на лапу азора’. Символы a =’a’,b = ’у’. Строка после замены символов:’ у розу упулу ну лупу узору’. Пример 2. Удалить из строки два первых символа. Предлагается два способа решения задачи. В первом – используется стандартная функция delete. Текст программы: var s:string [100]; i,n:integer; Begin write(' строка s?...'); readln(s); n:=length(s); writeln ( 'исходная строка:', s, ', длина строки:' ,n); delete(s,1,2); //с 1-ой позиции удаляются 2 символа write(' строка после удаления символов:'); writeln(s,', длина строки:' ,length(s)); end. Результаты выполнения программы: Исходная строка: ‘информация’, длина строки: 10 Строка после удаления символов: ‘формация’, длина строки: 8 Второй способ решения использует сдвиг элементов в строке. Текст программы: var s:string [100]; i,n:integer; Begin write(' строка s?...'); readln(s); n:=length(s); writeln ( 'исходная строка:', s, ', длина строки:' ,n); for i:=3 to n do // сдвиг с3-ей позиции влево на 2 символа s[i-2]:=s[i]; setlength(s,n-2); //установить новую длину строки write( 'строка после удаления символов:' ); writeln(s,', длина строки:' ,length(s)); end. Результаты выполнения программы: Исходная строка: ‘ информация’, длина строки: 10 Строка после удаления символов: ‘формация’, длина строки: 8 Пример 3. Вставить в начало строки символ a. Предлагается два способа решения задачи. В первом – используется стандартная функция вставки insert. Текст программы: var s:string [100]; a:char; i,n:integer; Begin write(' строка s?...'); readln(s); n:=length(s); writeln ( 'исходная строка:', s, ', длина строки:' ,n); write( 'символ a?...' );read(a); insert(a,s,1); //вставить в s на 1-ую позицию символ a write( 'строка после добавления символа:'); writeln(s,', длина строки:', length(s)); end. Результаты выполнения программы: Исходная строка: ‘клад’, длина строки: 4, символ a =’o’ Строка после добавления символа: ‘оклад’, длина строки: 5 Второй способ решения использует сдвиг вправо элементов в строке. Текст программы: var s:string [100]; a:char; i,n:integer; Begin write(' строка s?...'); readln(s); n:=length(s); writeln ( 'исходная строка:', s, ', длина строки:' ,n); write( 'символ a?...'); read(a); setlength(s,n+1); //установить новую длину строки for i:=n downto 1 do s[i+1]:=s[i]; s[1]:=a; write( 'строка после добавления символа:'); writeln(s, ', длина строки:', length(s)); End. Результаты выполнения программы: Исходная строка: ‘клад’, длина строки: 4, символ a =’о’ Строка после замены символа: ‘оклад’, длина строки: 5 Пример 4. Найти сумму значений всех цифр, содержащихся в строке. Текст программы: var s:string [100]; sum:integer; i,n:integer; Begin write(' строка s?...'); readln(s); n:=length(s); writeln ( 'исходная строка:', s, ', длина строки:' ,n); sum:=0; for i:=1 to n do if (s[i]>='0') and (s[i]<='9') then sum:=sum+(ord(s[i])-ord('0')); writeln( 'сумма цифр=', sum); end. Результаты выполнения программы: Исходная строка: ‘вес груза 980453’, длина строки: 16, сумма цифр=29 Пример 5. Подсчитать, сколько раз каждая цифра встречается в тексте. Текст программы: var s:string [100]; k:array['0'..'9'] of integer; //массив счетчиков i,n:integer; c:char; Begin write( 'строка s?...'); readln(s); n:=length(s); writeln ( 'исходная строка:', s, ', длина строки:' ,n); for c:='0' to '9' do k[c]:=0; //обнуление счетчиков for i:=1 to n do if (s[i]>='0') and (s[i]<='9') then k[s[i]]:=k[s[i]]+1; writeln('--------------------------------------'); writeln(' |количество повторений цифр в строке:|' ); writeln('--------------------------------------'); for c:='0' to '9' do writeln(c,' - ', k[c]); End. Результаты выполнения программы: исходная строка: ‘3,1415926543’, длина строки: 12 -------------------------------------------------- |количество повторений цифр в строке:| ----------------------------------------------------------- 0 - 0 1 - 2 2 - 1 3 - 2 4 - 2 5 - 2 6 - 1 7 - 0 8 - 0 9 - 1
|