← Все вопросы

строки в паскале, как узнать длину и пройтись по символам? length не пойму

Задан 19 месяцев назад639 просмотров2 ответа
5

Задали посчитать сколько букв 'а' в слове. Я знаю что есть 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 ответа

10
✓ Принятый ответ — помог автору

Почти получилось! Две правки: 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).

3

у тебя ещё в условии было s = 'а' — это ты всю строку сравнивал с буквой, поэтому никогда не совпадало. нужен именно s[i] — i-я буква. на эту мелочь половина класса попалась)

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект