![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Jekaterina |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Женский Реальное имя: Jekaterina Lauce Репутация: ![]() ![]() ![]() |
Доброго всем утра!
Попалась задача: дано дерево, в узлах которого записаны неповторяющиеся числа. Задача: вывести в выходной файл зеркальное отражение дерева. При этом во входном файле дерево может быть записано двумя способами:1)в каждой строчке содержится информация об узле, не являющемся листом (внутренним узлом); либо 2) в записи первое число есть номер внутреннего узла, за которым выписаны дети в порядке с левой стороны в правую. Если, напр.б дан граф, как в пиложенном рисунке, то во входном файле запись его может быть и 1 2 3 4 5 3 6 7 5 8 8 9 10 11 и 5 8 3 6 7 8 9 10 11 1 2 3 4 5 В выходном файле граф выводистя подобным образом, но при условии, что внутренние узлы в порядке preoder (т.е. запись о родителе предшествует записи о ребенке). Я нашла решение задачи на с++, но очень плохо знаю этот язык. Если у кого-то будет время и желание, помогите, пожалуйста, перевести на паскаль эту программу. Прилагаю также тесты: из 8 тестов корректо выполняются 6. ![]() ![]() ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Самый простой (на мой взгляд) вариант - работать НЕ с таким графом, который у тебя нарисован, а вот с таким:
![]() Чувствуешь разницу? Список списков... Чтобы "развернуть" такой граф достаточно просто применить Invert (разворот списка) к каждому списку, содержащемуся в нем, и вывести результат в файл... Сможешь по любому заданному тебе представлению построить граф, или нужна помошь? |
Jekaterina |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Женский Реальное имя: Jekaterina Lauce Репутация: ![]() ![]() ![]() |
Нужна помощь. У меня маленький опыт программирования со списками, деревьями, стеками.
Если сказать честно, у нас лекций как таковых с примерами на эти темы не было, а на лету не получается ухватить идею и реализовать. |
Jekaterina |
![]()
Сообщение
#4
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Женский Реальное имя: Jekaterina Lauce Репутация: ![]() ![]() ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Ну, вот такой набросок попробуй использовать:
uses list;(вместо print - использовать процедуру записи в файл значений... После Invert в списке хранится зеркальная копия)... Программа тестировалась и корректно отработала (под корректной работой имеется в виду "правильно отобразила инвертирование дерева") с тестовыми файлами №7 и №8... "Развивайте мысль" (С) "Кролики" Прикрепленные файлы ![]() |
Jekaterina |
![]()
Сообщение
#6
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Женский Реальное имя: Jekaterina Lauce Репутация: ![]() ![]() ![]() |
Большое спасибо! Буду пробовать. С наступающим Новым годом!
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
![]() В общем, вот немного отредактированная процедура Print из модуля List, теперь она печатает результат именно так, как нужно: procedure tlist.print;Заметишь еще баги - говори... |
Jekaterina |
![]()
Сообщение
#8
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Женский Реальное имя: Jekaterina Lauce Репутация: ![]() ![]() ![]() |
Уважаемый Volvo, спасибо! Будете смеяться надо мной, но я до сих пор в благоговейном восхищении расшифровываю ваш код.
![]() Есть еще одна проблема-нам не позволяют писать свои модули, поскольку программы отсылаем на специальный тестирующий сервер. |
Jekaterina |
![]()
Сообщение
#9
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Женский Реальное имя: Jekaterina Lauce Репутация: ![]() ![]() ![]() |
Может быть, все-таки эта задача решается без указателей? Строки немного напоминают перестановки.
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Интересная история получается, тебе не кажется? ТЫ, значит, в качестве решения на С++ приводишь работу с классами (что есть ООП), да еще и с названиями на непонятном большинству языке (вот вам, разбирайтесь, типа)... А когда ТЕБЕ приводят программу на Паскале (заметь, работающую программу, да и названия переменных - по английски, не разобраться очень сложно), то вдруг ООП тебя сразу перестает устраивать, и ты ищещь более легкую программу...
![]() |
Lapp |
![]()
Сообщение
#11
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Может быть, все-таки эта задача решается без указателей? Строки немного напоминают перестановки. Если подходить с позиций списков, то, боюсь, без указателей нельзя ![]() Отражение действительно напоминает операции со строками, но лучше все же оперировать обычными числовыми массивами - отражение все равно делается в пару строчек.. ![]() Оговорки: 1. Я сильно полагаюсь на корректность данных, которая в программе не проверяется. Если в данных ошибка (граф зациклен, например) - результат непредсказуем. 2. Я ничуть не заботился об экономии времени и ресурсов. Но это исправимо при желании ![]() {Зеркальное отражение графа с упорядочиванием} PS 1. удалил лишний кусок кода уже после отправки; извиняюсь. 2. Добавил ReWrite(f) (замечено volvo, thnx) Сообщение отредактировано: Lapp - 4.01.2007 10:17 -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Lapp, ты забыл Rewrite(f), будет ошибка №103
![]() |
Lapp |
![]()
Сообщение
#13
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Lapp, ты забыл Rewrite(f), будет ошибка №103 ![]() ![]() ![]() ![]() надеюсь, ты понимаешь, почему.. ![]() Спасибо! Чтоб не переписывать, добавлю прямо в том мессадже.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Jekaterina |
![]()
Сообщение
#14
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Женский Реальное имя: Jekaterina Lauce Репутация: ![]() ![]() ![]() |
![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:49 |