Другие языки программирования и технологии

Помогите понять программу

Дана задача: Подсчитать количество букв А в последнем слове строки символов
Программа:


1.var s: string;

2. i, k: integer;

3.begin

4. writeln ('Введите предложение из двух и более слов');

5 readln (s);

6 k:=0;

7 i:=length(s);

8 while s[i]<>' ' do

9 begin

10 if s[i]='а' then inc(k);

11 i:=i-1;

12 end;

13 writeln ('Количество символов а в последнем слове = ',k);

end.

Помогите понять 8 строчку. Объясните пожалуйста, что мы в ней делаем

Спасибо
Пока элемент массива не пустой ('' - пусто) - критерий окончания цикла
Слава Нетребенко
Слава Нетребенко
53 421
Лучший ответ
Заголовок цикла с предусловием.
8 строка:
пока символ S[i] не равен пробелу

там не '', там '(пробел) '
Marin Bakardzhiev
Marin Bakardzhiev
38 452
8ую строчку нужно писать чуток по-другому:
while (s[i] <> ' ') and (i > 0) do

В этом случае программа будет работать даже если слово только одно или строка вообще пуста.
А всего лишь нужно добавить условие проверки допустимости индекса.
Вот Вам восьмая и остальные:
=============================
var // var = variables - переменные. Тут объявляются переменные.
s: string; // string - строка. Объявляется переменная с типом строка. Имя переменной - s.

i, k: integer; // integer - целочисленный. Объявляются две целочисленные переменные (отличие целого числа от вещественного смотрите в Вики) . Названия этих переменных - i, k.

begin

writeln ('Введите предложение из двух и более слов'); // эта функция, которая выводит на экран что-то. В данном случае выводит строку между символами ' и '.

readln (s); // эта функция считывает значения переменной s. Т. е. открывается возможность ввести значение переменной s, т. е. текст (т. к. s - строчного типа) .

k:=0; // обнуляем переменную. Это часто нужно. В разных случаях.

i:=length(s); // получаем длину строки с помощью функции length() и присваиваем эту длину переменной i. Длину получаем, не в метрах или километрах, а в количестве символов (букв, знаков, цифр) , из которых состоит переменная (строка s).

while s[i]<>' ' do // Цикл. s[i] <> ' ' - это условие завершения цикла. Т. е. пока это условие выполняется, цикл будет продолжатся.

begin // начало цикла

if s[i]='а' then inc(k); // условный оператор if. в нём написано условие, соблюдение которого требуется для выполнения его тела (или как правильней сказать?) , его операторов. Выполняется только одна операции по инкрементации (увеличению на единицу) значения переменной k.

i:=i-1; // это управляющая переменная. Она управляет циклом. Т. е. в зависимости от изменения её значения будет выполняться или завершится этот конкретный цикл. В данном случае, с помощью этой переменной перечисляются с конца до начала (а точнее, до пробела, как написано в условии цикла) все символы переменной s.

end; // окончание страшного цикла.

writeln ('Количество символов а в последнем слове = ',k); // Выводим на экран результат и пояснения к нему.

end.
Виталий Ивко
Виталий Ивко
5 430