Algofil
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору CPPASCAL, допустим, что размерность матрицы невелика и позволяет разместить одну строку в стринге (<256) делаем следующее: 1. открываем входной файл 2. открываем выходной файл, стек и очередь 3. читаем размер матрицы (вдруг пригодится) 4. пока не конец файла: 4.1 читаем очередную строку 4.2 если1 буквы_по_алфавиту - кидаем в выходной файл иначе1 если2 буквы_против_алфавита - кидаем в стек иначе2 - кидаем в очередь 5. пока стек непуст - строки из стека в выходной файл 6. пока очередь непуста - строки из очереди в выходной файл естественно что кроме этого потребуется: а) функции булева типа распознающие идут ли буквы по алфавиту, против алфавита (можно одну с доп. параметром) б) набор методов для работы со стеком и очередью в) если матрица велика два дополнительных файла вместо стека и очереди, стек в файле - дурдом, но в принципе реализуемо. Добавлено: DJ Kovrik, перемещаешь элементы из стека в очередь, проверяя каждый вдоль очереди на предмет совпадения (можно и вдоль стека проверять, но тада он превратится в очередь) когда исходный стек пуст, перемещаешь очередь в стек1, а оттуда в исходный. Удаление элементов непосредственно из стека превратит его в список. погугли ченить про АТД - увлекательнейшая материя Добавлено: Mad_08, интересная задача, давай подробности и пример для малых n и m, вот это не то?: абыр арбы арыб .... рыба |