Статья не окончена. Помогите дополнить её.
Array Of Char
.Type TCharset = Set Of Char; Const CyrillicCharset : set of char = ['А'..'Я','а'..'п','р'..'я']; LatinCharset : set of char = ['A'..'Z','a'..'z']; function CheckAlphabet (Str: string; Charset: TCharset): boolean; var i: integer; begin i := 1; While (i <= Length (Str)) And (Str[i] In Charset) Do Inc (i); If i > Length (Str) Then CheckAlphabet := TRUE Else CheckAlphabet := FALSE end; var S: string; begin readln (S); WriteLn (CheckAlphabet(S,LatinCharset)) end.
Некоторый набор символов считается словом, если он состоит из символов алфавита (латинского или, допустим, кириллицы) и знака дефис.
Type TCharset = Set Of Char; Const CyrillicCharset : set of char = ['А'..'Я','а'..'п','р'..'я']; LatinCharset : set of char = ['A'..'Z','a'..'z']; function WordCount (S: string; Charset: TCharset): integer; var i, len, words: integer; PrevIsAlpha: boolean; { признак того, что предыдущий символ принадлежит набору алфавита } begin words := 0; PrevIsAlpha := FALSE; len := 0; for i := 1 to Length(S) do if NOT (S[i] in Charset) then { Если i-й символ строки НЕ принадлежит алфавиту (достигли конца слова) } begin if PrevIsAlpha AND (len>1) then { а предыдущий также принадлежит алфавиту и длина слова более 1 символа } inc (words); len := 0; PrevIsAlpha := FALSE end else begin inc (len); PrevIsAlpha := TRUE end; WordCount := words end;
Использовать функцию так:
writeln (WordCount ('function WordCount (S: string; Charset: TCharset): integer;', LatinCharset))
count := 0; { обнулить счётчик } for i := 1 to Length (str) do if str[i] = ch {символ} then inc (count); {count := count + 1 увеличить счётчик}
Регулярные выражения помогают в сложных и простых случаях, когда необходимо найти или заменить вхождения символов по заданномуу шаблону. Применяя их, нет необходимости в сложных алгоритмах разбора строк на составные части, что значительно облегчает написание кода в программах.