Обработка символьных массивов на языке Паскаль


Данные типа CHAR и STRING позволяют представлять в программах тексты и производить над ними некоторые операции, например, исправлять орфографические ошибки, вставлять и удалять отдельные буквы и слова. Кроме того, они дают возможность обрабатывать различные ведомости, документы и т.д. Значением строковой величины может быть лубая цепочка символов. Строка – это последовательность символов кодовой таблицы персонального компьютера. Количество символов в строке (длина строки) может изменяться от 0 до 255. Константа строкового типа – это любая цепочка символов языка Паскаль, заключенная в апострофы ( ‘ ). Описание строковых переменных:var <идентификатор> : string [необходимая длина строки];ПРИМЕР :const adres=’ул.Королева, 5’;var s:string; d : char; st1, st2 : string [30]Значения строковым переменным задаются либо оператором присваивания, либо оператором readln с клавиатуры. Сравнение строк. Конкатенация (сложение). Удаление нескольких символов из строки. Вставка символов в строку. Определение длины строки. Копирование символов строки. Поиск подстроки в строке. Преобразование числа в строку. Преобразование строки в число. Типовые задачи на строковые переменные. Тест для проверки знаний. ВЫХОД Операции над строковыми переменными Возврат на содержание Сравнение строк Для сравнения строк используют следующие символы сравнения <>,<,>, >=,<=,= Например: написать программу определяющую какое из введенных с клавиатуры слов будет стоять раньше в упорядоченном по алфавиту списке. program sravnen; var a, b : string; begin write (‘введите первое слово ’); readln(a); write (‘введите второе слово ’); readln(b); if a>b then writeln(‘Слово ’,a,’ стоит раньше слова ‘ , b) else writeln (‘Слово ’,b,’ стоит раньше слова ‘ , a) end. Например: написать программу при помощи которой получают предложение из отдельных слов. program slogen; var a,b,c,d,s : string; begin write (‘введите первое слово ’); readln(a); write (‘введите второе слово ’); readln(b); write (‘введите третье слово ’); readln(c); write (‘введите четвертое слово ’); readln(d); s:=a+’ ’ +b+’ ’+c+’ ’+d+’.’; writeln (‘Полученное предложение ‘ , s) end. Возврат на содержание Конкатенация (сложение) Сложение двух или более строк осуществляется при помощи знака +. Возврат на содержание Удаление нескольких символов из строки Delete(str,poz,n) - удаление из строки str, начиная с позиции poz, n символов. Пример : Program udalenie; var str, s : string; begin str:=’оператор’; s:=Delete(str,2,2) writeln(‘Получилось: ’,s); end. результат : Получилось: оратор Возврат на содержание Вставка символов в строку Insert(str1,str2,poz) - вставка строки str1 в строку str2, начиная с позиции poz. Пример : program vstavka; var str1,str2, s : string; begin str1:=’ка’; str2:=’Тропинка’; s:=Insert(str1,str2,6); writeln(s); end. результат ‘Тропиканка’ Возврат на содержание Определение длины строки Length(st) - вычисляет текущую длину (количество символов) строки. Пример : program wwww; var str : string; k : integer; begin str:=’оператор’; k:= Length(str); writeln(‘Количество символов = ’,k); end. результат : Количество символов =8 Возврат на содержание Копирование символов строки Copy(st,poz,n) - из строки st, начиная с позиции poz, берутся n символов;Пример : program copir; var str,s : string; begin str:=’стройка’; s:= Copy(str,2,6) writeln(‘Получилось: ’,s); end.результат: Получилось: тройка Возврат на содержание Поиск подстроки в строке Pos(str1,str2) - поиск подстроки str2 в строке str1 и возвращает номер позиции, с которой начинается строка str2, если подстрока не найдена, то возвращается 0.Пример : program poisk; var str1, str2 : string; k : integer; begin str1:=’абракадабра’; str2:=’брак’; k:=pos(str1,str2); writeln(‘Строка str2 входит в строку str1 начиная с позиции ’,k); end.Результат: Строка str2 входит в строку str1 начиная с позиции 2 Возврат на содержание Преобразование числа в строку Str(v,s) - заданное число v преобразуется в строку s; program perevod; var s : string; k : integer; begin writeln(‘Введите число’); readln(k); str(k,v); writeln(‘Получилась строка ’,s); end. Результат: Получилась строка ...... Возврат на содержание Преобразование строки в число Val(s,v,c) - если строка s состоит из цифр, они преобразуются в некоторое числовое значение и передаются переменной v. program perevod; var s : string; k : longint; begin writeln(‘Введите строку состоящую из цифр’); readln(s); Val(s,k,c); writeln(‘Строка преобразовалась в число’,k); end. Возврат на содержание Типовые задачи на строковые переменные Подсчет количества определенного символа в строке.Подсчет количества цифр в строке.Палиндром.Сжатие строки.Формирование новой строки.Определение наименьшего слова в строке. Дана строка, содержащая 20 символов. Подсчитать сколько раз буква F встречается в данной строке Program zadacha; var s : string[20]; i,k : integer;begin writeln(‘Введите строку. Количество символов в ней не должно превышать 20’); read(s); k:=0; for i:=1 to 20 do if s[i]=‘f’ then k:=k+1; writeln(‘буква F встречается ’, k, ‘ раз(а)’); end. Дана строка, содержащая 20 символов. Подсчитать количество цифр, входящих в данную строку Program zadacha;var s : string[20]; n : string[10]; i,k,j : integer;begin writeln(‘Введите строку символов’); read(s); n:=‘0123456789’; for i:=1 to 20 do for j:=1 to 10 do if s[i]=n[j] then k:=k+1; writeln(‘В строке ’,s.’ ‘,k, ‘ – цифр’) end. Дано произвольное слово. Проверить является ли оно палиндромом.(Пример: казак, шалаш и др.) Program palindrom; var s : string; i,L,m,k : integer;Begin writeln(‘Введите слово’); read(s); k:=0; L:=length(s); m:=trunc(L/2); for i:=1 to m do if s[i] <> s[L+1-i] then k:=1; if k=1 then writeln(‘Слово ’,s,’ не палиндром’) else writeln(‘Слово ’,s,’ палиндром’) End. Дана строка символов. Получить новую строку из первоначальной строки, без точек Program zad; var s, h : string; i,k : integer;Begin writeln(‘Введите строку символов’); read(s); k:=1; for i:=1 to length(s) do if s[i] <> ‘.’ then begin h[k]:=s[i]; k:=k+1; end; for i:=1 to length(h) do write(h[i]) End. Из заданной строки получить новую строку, удалив все «*» и повторив каждый символ, отличный от звездочки дважды Program zadacha; var s, h : string; i,k,L,j : integer;Begin writeln(‘Введите строку символов’); read(s); k:=1; L:= length(s); j:=1; for i:=1 to L do if s[i] <> ‘*’ then begin h[j]:=s[i]; h[j+1]:=s[i]; j:=j+2; end; for i:=1 to 2*L do write(h[i]) End. Определить наименьшую длину слова в строке. Считать, что все слова отделены одним пробелом Program zadacha; var s : string; i, L, min, lw : integer;Begin writeln(‘Введите строку символов’); read(s); lw:=0; L:= length(s); min:=1; for i:=1 to L do if s[i] <> ‘ ’ then lw:=lw+1 else if (min>lw) and (lw>0) then begin min:=lw; lw:=0 end; writeln(‘min = ’, min) End.