Операции над символами
При сравнении символов они считаются равными, если равны их коды; один символ больше другого, если он имеет больший код. Пример ‘r’ = ’r’ (код 114 = код 114) ‘r’ > ’R’ (код 114 > код 82)
Для работы с символами используются следующие функции:
1. Chr( b ) – переводит код ASCII в символ.
Пример t:= chr(82); результат: t = ’R’. 2. Ord( s ) – выдает код символа.
Пример b:= ord(‘R’); результат: b = 82. 3. Pred( s ) – выдает предшествующий символ.
Пример t:= pred(‘М’); результат: t = ’Л’. 4. Succ( s ) – выдает следующий символ.
Пример t:= succ(‘М’); результат: t = ’Н’. 5. Upcase( s ) – переводит символ в верхний регистр.
Пример t:= upcase(‘а’); результат: t = ’А’.
В рассмотренных примерах переменная b целого типа (integer), а переменные s и t – символьного типа (char).
Операции над строками
Сравнение строк осуществляется посимвольно, начиная от правого символа в строке. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны. Для работы со строками определены следующие процедуры:
1. Delete( S, N, K ) – удаляет из строки S, начиная с позиции N, K символов.
Пример S:= ‘аbcdef’; Delete(S, 3, 2); результат: S = ’abef’. 2. Insert( T, S, N ) – вставляет строку T в строку S, начиная с позиции N.
Пример S:= ‘аbcdef’; Insert(‘xyz’, S, 4); результат: S = ’abcxyzdef’. 3. Str( V, S ) – преобразует число V в строку символов S.
Пример V:= 12; Str(V, S); результат: S = ’12’. 4. Val( S, V, Kod ) – преобразует строку S в число V, Kod – номер ошибочного символа.
Пример S:= ‘123’; Val(S, V, C); результат: V = 123, C = 0. S:= ‘12d3’; Val(S, V, C); результат: V – не определено, C = 3.
Для работы со строками определены следующие функции:
1. Copy( S, N, K ) – копирует из строки S, начиная с позиции N, K символов.
Пример S:= ‘abcdef’; St:= Copy(S, 2, 4); результат: St = ’cdef’. 2. Concat( S1, S2, …, SN ) – сцепляет строки S1, S2, …, SN в одну строку.
Пример S1:= ‘abc’; S2:= ’def’; S:= Concat(S1, S2); {или S:= S1 + S2;} результат: S = ’abcdef’.
3. Pos( T, S ) – определяет номер позиции, начиная с которого строка T входит в строку S.
Пример S:= ‘abcdef’; T:= ’d’; N:= Pos(T, S); результат: N = 4. K:= Pos(‘cd’, S); результат: K = 3. M:= Pos(‘k’, S); результат: M = 0. 4. Length( S ) – определяет длину строки S.
Пример S:= ‘abcdef’; N:= Length(S); результат: N = 6.
Пример 1 Распечатать ASCII коды всех латинских заглавных букв.
Program pr1; Uses crt; Var b: char; k: integer; Begin Clrscr; For b:= ’A’ To ‘Z’ Do Begin k:= Ord(b); Write(b, ’ – ‘, k, ’ ‘); End; End.
Пример 2 Дано слово “информатика”. Получить из него с помощью копирования слова: “форма”, “рама”, “рамка”.
Program pr2; Uses crt; Var s, s1, s2, s3, s4, s5, s6: string; Begin Clrscr; s:= ’информатика’; s1:= Copy(s, 3, 5); Writeln(s1); s2:= Copy(s, 5, 1); s3:= Copy(s, 7, 1); s4:= Copy(s, 6, 2); s5:= s2 + s3 + s4; {или s5:= Concat(s2, s3, s4);} Writeln(s5); s6:= Copy(s, 10, 1); Insert(s6, s5, 4); Writeln(s5); End. Пример 3 Дано слово “угол”. Получить из него слова: “уголь” ® “гол” ® “гандбол” ® “банда”.
Program pr3; Uses crt; Var n, i: integer; s: string; Begin Clrscr; s:= ’угол’; Insert(‘ь’, s, 5); {получаем слово “уголь”} Writeln(s); Delete(s, 1, 1); Delete(s, 4, 1); {получаем слово “гол”} Writeln(s); Insert(‘андб’, s, 2); {получаем слово “гандбол”} Writeln(s); s1:= Copy(s, 5, 1); s2:= Copy(s, 2, 1); s3:= Copy(s, 2, 3); s:= Concat(s1, s3, s2); {получаем слово “банда”} Writeln(s); End.
Пример 4 Дана строка. Заменить в ней все слова “ковер” на “палас” и вычислить, сколько раз это слово встречается.
Program pr4; Uses crt; Var s: string; kol, k: integer; Begin Clrscr; Writeln(‘Введите строку’); Readln(s); kol:= 0; k:= Pos(‘ковер’, s); While k <> 0 Do Begin Delete(s, k, 5); Insert(‘палас’, s, k); kol:= kol + 1; k:= Pos(‘ковер’, s); End; Writeln(s); Writeln(‘kol=’, kol); End.
Пример 5 Дано слово “танк”. Получить из него слово “кант”.
Program pr5; Uses crt; Var s: string; n: char; Begin Clrscr; s:= ’танк’; n:= s[1]; s[1]:= s[4]; s[4]:= n; Writeln(s); End.
Пример 6 Дана строка. Заменить все символы “!” на “?”, а после каждого символа “,” или “;” вставить пробел.
Program pr6; Uses crt; Var n, i: integer; s: string; Begin Clrscr; Writeln(‘Введите строку’); Readln(s); n:= Length(s); i:= 1; While i <= n Do Begin If s[i] = ’!’ Then s[i]:= ’?’; If (s[i] = ’,’) or (s[i] = ’;’) Then Begin Insert(‘ ’, s, i + 1); n:= n + 1; i:= i + 1; End; i:= i + 1; End; Writeln(s); End.
Пример 7 Дана строка – повествовательное предложение. Вычислить количество слов в предложении.
Program pr7; Uses crt; Var n, i, k: integer; s: string; Begin Clrscr; Writeln(‘Введите строку’); Readln(s); n:= Length(s); k:= 0; For i:= 1 To n Do If (s[i] = ’ ’) or (s[i] = ’.’) Then k:= k + 1; Writeln(‘слов – ’, k); End.
Пример 8 Дан текст. Удалить первую букву каждого слова.
Program pr8; Uses crt; Var n, i: integer; s: string; Begin Clrscr; Writeln(‘Введите строку’); Readln(s); n:= Length(s); Delete(s, 1, 1); For i:= 1 To n Do If s[i] = ’ ’ Then Delete(s, i + 1, 1); Writeln(s); End.
Пример 9 Дан текст. Определить правильность написания сочетаний “жи” и “ши” и исправить ошибки.
Program pr9; Uses crt; Var k, n, i, m: integer; s: string; Begin Clrscr; Writeln(‘Введите строку’); Readln(s); n:= Length(s); For i:= 1 To n Do If ((s[i] = ’ж’) or (s[i] = ’ш’)) and (s[i + 1] = ’ы’) Then s[i + 1]:= ’и’; Writeln(s); End.
Пример 10 Дано слово. Преобразовать все его буквы в заглавные.
Program pr10; Uses crt; Var с: char; n, i: integer; s: string; Begin Clrscr; Writeln(‘Введите строку’); Readln(s); n:= Length(s); For i:= 1 To n Do Begin c:= Upcase(s[i]); s[i]:= c; End; Writeln(s); End.
|