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

UptoLike

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

47
Задача 11: В строке все слова, которые начинаются и заканчиваются
одной буквой, выделить квадратными скобками.
Пример: из строки «шалаш широкий и просторный» должно получиться
«[шалаш] широкий [и] просторный».
Размышления:
1. Очевидно, что задача представима в виде следующей
последовательности действий:
1.1. Ввод данных
1.2. Обработка данных
1.3. Вывод результата
2. Так
же логично предположить, что пользователь вводит строку с
клавиатуры. Т. е. в качестве входных данных у нас есть строка.
3. Из предыдущего примера ясно, что, если мы научимся находить начало
слова и его длину, это решит проблему нахождения слова.
3.1. Операции нахождения начала и длины слова так же полностью
аналогичны тем
, которые были в предыдущем примере.
3.2. Теперь мы умеем находить слово (потому что умеем находить
начало слова и его длину). Поэтому вернемся к изначальному заданию:
выделить слова, которые начинаются и заканчиваются одной и той же
буквой. Очевидно, что выделение слова происходит по условию.
Возникает вопроскак реализовать это условие? Если
у нас есть слово в
виде строки, то первый символ в нем имеет индекс 0, а последний
Length - 1. Поэтому в виде кода условие необходимости выделения слова
будет выглядеть следующим образом:
public static bool needMarkWord(string word) {
if (word[0] == word[word.Length - 1]) {
return true;
} else {
return false;
}
}
3.3. Как видно из этого кода, нам нужно получить слово в виде строки.
Получение слова из строки полностью аналогично примеру из
предыдущей задачи.
3.4. Что бы верно реализовать алгоритм, вспомним, что по сути строка
является одномерным массивом символов. Поэтому вставка в нее
ведет к изменению индексации (в случае выделения слова
вставляются
квадратные скобки). Поэтому очевидно, что в
результате обработки строки строка будет изменяться. И для
обработки строки необходима только сама строка. Поэтому в
функции обработки будет только один строковый параметр с
ключевым словом ref.
3.5. Псевдокодовый алгоритм решения задачи будет выглядеть
следующим образом: