![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 17.06.2010
Сообщений: 3
|
![]()
Вообщем у меня такая программа: Текст программы на Паскале хранится в файле на диске. Считать программу с диска и получить распечатку программы. Степень вложенности операторов цикла пометить добавлением слева соответствующего количества пробелов.
Проблема в том, что не могу понять, по какому принципу/алгоритму будет работать определение вложенности. Как понимаю это будет связано с поиском слов while/for + операторных скобок begin/end; Помогите решить пожалуйста. Заранее спасибо. |
![]() |
![]() |
![]() |
#2 |
Ищу работу
Форумчанин
Регистрация: 16.02.2007
Сообщений: 269
|
![]()
делай стек. проходи текста программы, при встрече begin, while, for, repeat, if, then ,else, case добавляй в стек количество пробелов, на которые нужно отступить. а при нахождении end, until извлекай из стека количество пробелов.
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 04.05.2010
Сообщений: 495
|
![]()
по begin end'у.
Для простоты используй входной файл, где каждый begin или end является отдельной строкой. Сканируй его построчно: нашел begin - перед ним и каждой последующей строкой добавляешь пробел. нашел далее begin - ставишь уже два пробела. Используй счетчик пробелов. нашел end уменьшай счетчик на 1.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948 |
![]() |
![]() |
![]() |
#4 |
Регистрация: 17.06.2010
Сообщений: 3
|
![]()
MadReason
мне препод тож говорил через стек с помощью баланса скобок, но я в динамических структурах полный 0, поэтому даже не пытаюсь сделать. Z1000000 да, идея хорошая, уже пробывал, но там есть один нюанс, который я никак не могу исправить и уже думаю 2ой день. Заключается он в следующем: если идёт например 2 цикла подряд (тот же for do), то он по идее должен увеличить вложенность (поставить пробел) перед 2ым for do. Я представлял себе алгоритм такой: нашёл for do, нужно проверить следующую строчку, если в ней есть for do, то поставить дополнительный пробел, если нету, то удалить пробел. А вот в чём проблема: я не знаю как проверить, есть ли в следующей строке for do/while, находясь при этом на текущей. Была идея с занесением всего файла в массив строк, но тогда не знаю как оформить всё это дело |
![]() |
![]() |
![]() |
#5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Могу предложить без стека
Код:
I'm learning to live...
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 17.06.2010
Сообщений: 3
|
![]()
Вообщем вот программа, где я пытался сделать через занесение строк файла в массив:
Код:
Отметить как я понимаю наверно цветом, но это не особо важно. Не могли бы подсказать как это можно сделать? Заранее премного благодарен) Последний раз редактировалось Stilet; 21.05.2011 в 17:27. |
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 19.05.2011
Сообщений: 2
|
![]()
Dissan не мог бы ты выложить полный код программы?? У меня токой же курсач. Заранее спасибо.
Последний раз редактировалось monster_63; 21.05.2011 в 15:44. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Текстовый тип файлов [Pascal] | TRueXe | Помощь студентам | 3 | 18.04.2010 17:23 |
[Pascal] Считать текстовый файл | Рамик | Помощь студентам | 13 | 27.05.2009 14:34 |
текстовый файл.Pascal. | xartion | Помощь студентам | 2 | 26.05.2009 22:31 |
pascal.Текстовый файл | Mashul'ka | Помощь студентам | 1 | 14.05.2009 19:45 |
как определить какие файлы есть в папке и вывести их имена в текстовый файл | Tdoctor | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 04.11.2008 05:18 |