строки в паскале, как узнать длину и пройтись по символам? length не пойму
Задали посчитать сколько букв 'а' в слове. Я знаю что есть length, но не понимаю как добраться до каждой буквы по отдельности. Пробую так и ошибка:
var
s: string;
i, k: integer;
begin
readln(s);
for i := 1 to length do
if s = 'а' then k := k + 1;
writeln(k);
end.
Помогите поправить.
2 ответа
Почти получилось! Две правки: length(s) — надо в скобках указать ЧТО мерим, и к отдельной букве обращайся через s[i] (как в массиве). Ещё k обнули в начале, иначе там мусор:
var
s: string;
i, k: integer;
begin
readln(s);
k := 0;
for i := 1 to length(s) do
if s[i] = 'а' then
k := k + 1;
writeln('Букв а: ', k);
end.
Главное понять: строка — это как массив символов. length(s) даёт количество букв, а s[1], s[2], ... s[i] — это сами буквы по порядку. Поэтому циклом от 1 до length(s) можно перебрать каждую букву и сравнить её с 'а'.
И помни: символ берём в одинарные кавычки 'а', и это именно одна буква (тип char).
у тебя ещё в условии было s = 'а' — это ты всю строку сравнивал с буквой, поэтому никогда не совпадало. нужен именно s[i] — i-я буква. на эту мелочь половина класса попалась)