Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Don Гость
|
Добавлено: Вс Июн 22 2003 14:37 Заголовок сообщения: текстовые файлы |
|
|
Здраствуйте. Проблема такая: дан программный файл на Паскале, необходимо подсчитать колличество вложенных циклов (while,for,repeat). Никак немогу продумать алгоритм подсчета. Help please. |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Пн Июн 23 2003 09:00 Заголовок сообщения: А в чем проблема: разбить на слова, подсчитать количество самих слов while,for,repeat или каким языком посчитать? (-) |
|
|
- |
|
Вернуться к началу |
|
|
Don Гость
|
Добавлено: Пн Июн 23 2003 12:47 Заголовок сообщения: Проблема в подсчете количества вложенных циклов |
|
|
Т.е. надо подсчитать количество вложенных while и т.д. например while not eof(f) do while not eoln(f) do begin ... end; for i:=1 to n do ....
while ... do begin ... end;
т.е. здесь колич. влож. циклов =1 Еще надо учитывать то что циклы могут быть одной строкой т.е. без begin и end. |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Пн Июн 23 2003 13:05 Заголовок сообщения: Re: Проблема в подсчете количества вложенных циклов |
|
|
Используй стек. Счетчик слов увеличивай, если встретившийся цикл находится не в основании стека. Стек увеличивай, если сразу за do стоит контрольное слово (while,for,repeat) или begin? а уменьшай, если встретилась ";" без begin или end при наличии begin. Естественно if then [begin-end] else [begin-end] игнорировать.
Примерно так. Подходит? |
|
Вернуться к началу |
|
|
Don Гость
|
Добавлено: Вт Июн 24 2003 06:03 Заголовок сообщения: ? |
|
|
Спасибо что отвечаете на мои вопросы. Со стеками я плохо знаком. Вы не могли бы выслать сам код программы? А то мне в 30 июня сдавать надо.
p.s. а можно ли без использования стеков? |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Вт Июн 24 2003 13:05 Заголовок сообщения: Можно и без стеков |
|
|
Вместо стека использовать логическую переменную, имеющую значения "цикл на нулевом уровне/цикл на ненулевом уровне". Но это, вероятно, будет более запутанный алгоритм.
Вместо стека использовать числовую переменную, имеющую значения "номер уровня вложения". Начальное значение ноль. Но этот алгоритм в точности аналогичен стековому, только вместо стека как структуры используется стек как число -- номер уровня.
>> Вы не могли бы выслать сам код программы? Мог бы, но за плату , за достойную. |
|
Вернуться к началу |
|
|
Don Гость
|
Добавлено: Ср Июн 25 2003 05:36 Заголовок сообщения: спасибо |
|
|
оплатить я наверное не смогу так как у меня нет ни счета ни карточки. |
|
Вернуться к началу |
|
|
|