Процедуры и функции для работы со строками
Length(s) Функция, возвращает длину строки s … var s:string; m:integer; … readln(s);s=длина m:=length(s);m= 5
Concat(s1,s2,…,sn) Функция, возвращает строку, представляющую собой объединение строк s1, s2,…,sn … var s,s1,s2:string; … s1:=все учат информатику; s2:= и делают домашнюю работу; s:=concat(s1,s2) все учат информатику и делают домашнюю работу
Copy(s,i,c) Функция, возвращает подстроку строки s, начиная с позиции i и состоящую из с симваллов … var s1,s2:string; … s1:=все учат информатику; s2:=copy(s1,10,10)+a; writeln(s2); информатика
Delete(s,i,c) Процедура, удаляет из строки s с симваллов, начиная с позиции i … var s,s1,s2:string; … s1:=все учат информатику; s2:= и делают домашнюю работу; delete(s1,5,16); delete(s2,1,3); delete(s2,7,9); s:=concat(s1,s2); все делают работу
Insert(s1,s,i) Процедура, вставляет подстроку s1 в строку s, начиная с позиции i … var s1:string; … s1:=все учат информатику; insert(старательно,s1,5); все старательно учат информатику
Pos(s1,s) Функция, возвращает позицию первого вхождения подстроки s1 в строку s или 0, если s не содержит подстроки s1. … var s1:string;k:integer; … s1:=все учат информатику; writeln(pos(все,s1)); 1
Str(i,s) и Val(s,i,code) Str(i,s) - процедура, преобразует число i в строку. Результат записывает в s Val(s,i,code) – процедура, преобразует строку s к числу, тип которого соответствует переменной i. Результат записывается в переменную i. Если преобразование прошло успешно, в переменную code записывается значение 0, иначе записывается номер символа, для которого возникла ошибка при преобразовании типов.
Str(i,s) и Val(s,i,code) … var s:string;k:integer;l:real; … str(123,s); val(12.3,l,k); val(12,3,l,k); s=123 l=12.3, k=0 l=0, k=3
Пример 1. Пример 1. Что будет напечатано программой? program ex1; var s,a:string;i:byte; begin s:='123'; a:=''; for i:=1 to length(s) do a:=s[i]+a+s[i]; writeln(a); end
Пример 2. Пример 2. Что будет напечатано программой? program ex2; var s,a:string;i:byte; begin s:='123'; a:=''; for i:=length(s) downto 1 do a:=a+s[i]+a; writeln(a); end
Пример 3. Пример 3. Что будет напечатано программой? program ex3; var s:string;i:byte; begin s:=кооокалло каллокола'; i:=pos(алло,s); while i<>0 do begin delete(s,i,3); i:=pos(алло,s); end; writeln(s); end. кооок кола удалились все сочетания «алло»
Пример 4. Пример 4. Найти ошибки в программе program ex4; var s:string;i:byte; begin s:= 'кооокалло каллокола'; a:=''; i:=1; while i<=length(s) do if s[i]<>'o' then a:=a+s[i] else i:=i+1; writeln(a); end. a:string; while i<=length(s) do begin if s[i]<>'o' then a:=a+s[i]; i:=i+1; end; кл кл кукла
Задание 1 Путем «вырезок» и «склеек» получить из исходного слова данные слова : вертикаль – тир, ветка программа – ром, рампа апельсин – спаниель яблоко – блок, око
Задание 2 Выполните задания, не используя операторы цикла, а используя только процедуры и функции для работы со строками. Задание сделать на компьютере, записать в тетрадь: 1. Дано слово из четного числа букв. Вывести на экран его первую палловину, не используя оператор цикла; 2. Дано слово из нечетного числа букв. Вывести на экран его первую палловину, включая среднюю букву, не используя оператор цикла; 3. Вывести на экран последовательность симваллов, распалложенных перед первым : 4. Вывести на экран последовательность симваллов, распалложенных после первого : 5. Вывести на экран последовательность симваллов, распалложенных после второго : 6. Если длина слова четная, то вставить в середину слова букву «а», в противном случае удалить среднюю букву; 7. Сравнить и вывести, какая палловина слова стоит по алфавиту раньше, первая или вторая.
Решение 1,2,3,4 1.writeln(copy(s,1,length(s) div 2); 2.delete(s,length(s) div 2+2,length(s) div 2); writeln(s); 3.writeln(copy(s,1,pos(:,s)-1)); 4.delete(s,1,pos(:,s)); writeln(s);
Решение 5,6,7 5.k:=pos(:,s); delete(s,1,k); k:=pos(:,s); delete(s,1,k); writeln(s); 6. if length(s) mod 2 = 0 then insert(a,s,length(s) div 2 +1) else delete(s,length(s) div 2+1,1); writeln(s); 7.s1:=copy(s,1,length(s) div 2); s2:=copy(s,length(s) div 2+1, length(s) div 2); if s1 s2 then writeln(вторая палловина раньше) else writeln(палловины равны);
Пример 5. Пример 5. Подсчитать, сколько раз данный символ встречается в данной строке program ex5; var s:string;c:char;k,i:byte; begin readln(s);readln(c); k:=0; i:=pos(c,s); while i<>0 do begin k:=k+1; delete(s,i,1); i:=pos(c,s); end; writeln(k); end.
Пример 6. Пример 6. Удалить из заданной строки все цифры. program ex6; var s, digit :string; i :byte; begin readln(s); digit:= ; i:=1; while i<=length(s) do if pos(s[i],digit)<>0 then delete(s,i,1) else i:=i+1; writeln(s); end.
Задание 3 1. Подсчитать общее количество двух заданных симваллов в строке 2. Подсчитать количество гласных букв 3. Подсчитать количество согласных букв 4. Удалить в строке данную подстроку 5. Заменить в строке все подстроки одного вида на подстроки другого вида