помогите понять смысл данного условия код написан на паскале
помогите понять смысл данного условия
for i:=1 to length(Text) do if (Upcase(Text[i])in sogl)and((i=1)or (Text[i-1]=' ')) then inc(count); Writeln('otvet: ', count); |
grethin999, sogl я так понимаю "согласные".
В цикле осуществляется поиск слов, начинающихся с согласной буквы. Если рассматриваемый (текущий, перебираемый в цикле, обозначенный Text[i] и т.д.) символ сделанный прописным (заглавным, перевести в верхний регистр Upcase()) будет согласным (входить in в ранее обозначенную группу символов sogl) И - логическое условие, выполняется когда оба логических выражения, слева и справа истины (выполняются, правдивы) Справа есть "поправка" (i=1) сделана на случай рассмотрения первого символа. От первого символа нельзя отсчитать минус первую позицию.[*] Text[i-1]=' ' Условие начала нового слова. Слово ::= <пробел><символ>...<символ> Отличие первого символа от последующих - наличие перед ним пробела. Получается что левое выражение нам определяет символ (согласный/некий другой, знак препинания допустим) правое выражение определяет первый символ текста или слова. Если все верно, ставим плюсик. ( inc(count) ) ---- [*]Строго говоря можно получить нулевой символ строки. Text[0] в нем храниться длинна строки. Но это особенность языка паскаль! В C++ это не верно, в других языках надо проверять. В любом случае идеалогически правильно вызвать функцию определения длинны строки и работать с полученным результатом. |
Цитата:
|
Время: 10:57. |
Время: 10:57.
© OSzone.net 2001-