Автор: valerii 11.10.2010 3:12
Задачка непростая.
Итак, вот что надо сделать: программа должна в вводимом тексте искать каждое 5 слово и заменять только одну найденную букву в слове: "а" на %, а если буквы "а" нету, тогда букву "о" на *.
Хоть с паскалем знаком, но как организовать подобное не знаю.
Что посоветуйте?
Автор: Unconnected 11.10.2010 3:14
Для такой непростой задачи советую сделать конечный автомат.
Автор: valerii 11.10.2010 3:14
Цитата(Unconnected @ 10.10.2010 23:14)
Для такой непростой задачи советую сделать конечный автомат.
и как его сделать?
Автор: Unconnected 11.10.2010 3:32
А как вводится текст, строкой, файлом, или каждое слово отдельно?
Автор: valerii 11.10.2010 3:37
Цитата(Unconnected @ 10.10.2010 23:32)
А как вводится текст, строкой, файлом, или каждое слово отдельно?
Строкой, string
Автор: volvo 11.10.2010 4:18
Цитата
заменять только одну найденную букву в слове: "а" на %, а если буквы "а" нету, тогда букву "о" на *.
Задачу уточни... Допустим, слово №10 = это "мама". Что должно быть заменено? Только одна буква (какая именно?) или все буквы? Или вообще замена должна производиться только если в таких словах ВСЕГО одна заданная буква?
Цитата
Для такой непростой задачи
Я тебя умоляю. Метод разбиения строки на слова от
klem4 (только не в виде функции, а в основной программе) решает эту задачу максимум в 40 строк. Со всеми описаниями переменных
Ничего
непростого в ней нет.
Автор: Lapp 11.10.2010 6:37
Цитата(Unconnected @ 11.10.2010 0:14)
Для такой непростой задачи советую сделать конечный автомат.
Замысловато шутишь.. Ты хоть сам знаешь, что это такое? ))
2
valerii:
Если с Паскалем знаком (лично?
), труда не составит.
Примерно так:
1. организуешь поток символов данного текста;
2. обнуляешь счетчик слов n;
3. опустошаешь строку для будущего слова w;
4. из потока берешь следующий символ c;
5. если поток был пуст и слово w пусто - выходишь из программы;
6. если с - буква, добавляешь ее к w и преходишь к 4;
7. если w пусто, переходишь к 4;
8. увеличиваешь счетчик слов n;
9. если n<5, переходишь к 3;
10. выставляешь флаг f в true;
11. проходишь в цикле по слову w, если встречаешь "a" - заменяешь его на % и сбрасываешь f в false (и либо подолжаешь цикл, либо обрываешь, в зависимости от того, что ты ответишь на вопрос volvo);
12. если f, то проходишь в цикле по слову w, если встречаешь "o" - заменяешь его на * (и либо подолжаешь цикл, либо обрываешь, в зависимости от того, что ты ответишь на вопрос volvo);
13. переходишь к 2.
Разберешься? Когда переведешь алгоритм в код, показывай.
Успехов.