Помощь - Поиск - Пользователи - Календарь
Полная версия: Интересная задача с заменой букв в определенных условиях
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
valerii
Задачка непростая.

Итак, вот что надо сделать: программа должна в вводимом тексте искать каждое 5 слово и заменять только одну найденную букву в слове: "а" на %, а если буквы "а" нету, тогда букву "о" на *.

Хоть с паскалем знаком, но как организовать подобное не знаю.

Что посоветуйте?
Unconnected
Для такой непростой задачи советую сделать конечный автомат. smile.gif
valerii
Цитата(Unconnected @ 10.10.2010 23:14) *

Для такой непростой задачи советую сделать конечный автомат. smile.gif


и как его сделать?
Unconnected
А как вводится текст, строкой, файлом, или каждое слово отдельно?
valerii
Цитата(Unconnected @ 10.10.2010 23:32) *

А как вводится текст, строкой, файлом, или каждое слово отдельно?


Строкой, string
volvo
Цитата
заменять только одну найденную букву в слове: "а" на %, а если буквы "а" нету, тогда букву "о" на *.
Задачу уточни... Допустим, слово №10 = это "мама". Что должно быть заменено? Только одна буква (какая именно?) или все буквы? Или вообще замена должна производиться только если в таких словах ВСЕГО одна заданная буква?

Цитата
Для такой непростой задачи
Я тебя умоляю. Метод разбиения строки на слова от klem4 (только не в виде функции, а в основной программе) решает эту задачу максимум в 40 строк. Со всеми описаниями переменных smile.gif Ничего непростого в ней нет.
Lapp
Цитата(Unconnected @ 11.10.2010 0:14) *
Для такой непростой задачи советую сделать конечный автомат. smile.gif
lol.gif Замысловато шутишь.. Ты хоть сам знаешь, что это такое? ))

2 valerii:
Если с Паскалем знаком (лично?smile.gif), труда не составит.
Примерно так:

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.

Разберешься? Когда переведешь алгоритм в код, показывай.
Успехов.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.