Алгоритмическое мышление при решении задач (на примере языка C#). Шамшев А.Б - 36 стр.

UptoLike

Составители: 

36
for (int i=index; i<str.Length;i++) {
if (isSeparator(str[i])) {
break;
}
res = res + 1;
}
return res;
}
6.11. Теперь мы умеем находить слово (потому что умеем находить
начало слова и его длину). Поэтому вернемся к изначальному
заданию: удалить из строки слова, в которых есть буква 'a'.
Очевидно, что в нем удаление слова происходит по условию (если в
слове есть буква а). Возникает вопроскак это реализовать.
Функция, которая
проверяет наличие подстроки в строке в C#
называется Contains (хотя IndexOf тоже подойдетесли полученный
индекс больше -1, то это означает, что подстрока содержится в
строке). А функция Contains есть у переменных типа string. Поэтому
в виде кода условие необходимости удаления слова будет выглядеть
следующим образом:
/// <summary>
/// проверяет на необходимость удаления слова
/// </summary>
/// <param name="word">слово, которое проверяется</param>
/// <returns></returns>
public static bool needDelWord(string word) {
if (word.Contains('a')) {
return true;
} else {
return false;
}
}
6.12. Как видно из этого кода, нам нужно получить слово в виде строки.
А мы пока умеем находить только начало и длину слова. Однако в
C# есть метод Substring, который по началу и длине возвращает
подстроку (и в других высокоуровневых языках есть метод,
подобный этому).
6.13. Что бы верно реализовать алгоритм, вспомним
, что по сути строка
является одномерным массивом символов. Поэтому удаление из
нее ведет к изменению индексации. И в случае удаления не надо
переходить на следующий элемент, потому что из-за удаления он
сам «пододвигается». Поэтому в результате обработки строки строка
будет изменяться. И для обработки строки необходима только сама
строка.
Поэтому в функции обработки будет только один строковый
параметр с ключевым словом ref.
6.14. Псевдокодовый алгоритм решения задачи будет выглядеть
следующим образом: