ВУЗ:
Составители:
Рубрика:
50
Задача 12 (1 способ решения): Из файла удалить слова-полиндромы.
Размышления о ходе решения задачи.
1. Для того, что бы можно было обрабатывать файл, необходимо знать его
имя. Пусть в этой задаче пользователь вводит имя файла с клавиатуры.
2. Логично предположить, что результат обработки файла надо записать в
другой файл, имя которого так
же неизвестно. Поэтому попросим
пользователя ввести и имя выходного файла.
3. Для обработки файла входной файл необходимо открыть на чтение, а
выходной файл – на запись. При этом каждая из этих операций может
дать ошибку (например, пользователь ввел неверное имя файла).
Следовательно, надо предусмотреть такую возможность.
4. С файлами можно работать 2
способами – через функции
File.ReadAllLines, File.WriteAllLines и через потоки.
5. В этом способе решения мы воспользуемся методами ReadAllLines и
WriteAllLines. Они возвращают (записывают) все содержимое файла.
Как следствие, возникает ограничение по использованию – ими можно
пользоваться, если файл может целиком уместиться в оперативной
памяти компьютера. Будем считать, что это условие выполняется. Так
же следует отметить, что
для использования этих методов надо
подключить using File.IO в программе.
6. Текстовый файл – множество строк. Значит задача обработки файла
сводится к задаче обработки каждой строки в нем. Т. е. в псевдокоде
алгоритм обработки будет выглядеть следующим образом:
Получить все строки входного файла в массив
Создать массив для обработанных строк, размер которого равен изначальному
Для каждой строки файла
НачалоЦикла
Обработать текущую строку и результат записать в результирующий массив.
ОкончаниеЦикла
7. Задача обработки одной строки рассматривалась в предыдущих задачах.
Единственное отличие – условие удаления слова. Сказать, что слово
является полиндромом, мы можем только после просмотра всего слова.
Если во время просмотра слова буквы не совпадут, то это слово не
является полиндромом. В начале мы должны сравнить первую и
последнюю букву, потом вторую
и предпоследнюю и т. д. Приведем
код класса для обработки одной строки.
class StringWorker {
public string str;
public bool needDelWord(string word) {
//убираем чувствительность к регистру
for (int i = 0; i < word.Length;i++ ) {
if (word[i] != word[word.Length - 1 - i]) {
return false;
}
Страницы
- « первая
- ‹ предыдущая
- …
- 48
- 49
- 50
- 51
- 52
- …
- следующая ›
- последняя »