Понедельник, 23 Декабря 2024, 00:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Работа с файлом и стеками
leito747Дата: Четверг, 01 Ноября 2012, 18:59 | Сообщение # 1
был не раз
Сейчас нет на сайте
Имеется файл на бейсик с циклами.
# FOR ID=
...............
...............
# NEXT ID ,
где #-числовой номер(метка); ID-идентификатор параметра цикла.
Требуется:

с помощью стека проверить правильность вложенности
циклов;
переписать файл с исходным текстом так, чтобы операторы
цикла каждого последующего уровня вложения были сдвинуты на
две позиции вправо по сравнению с предыдущим уровнем.
Кто нибудь может помочь с написанием cry


Game developer
RUNGOGET2THECHOPAHДата: Четверг, 01 Ноября 2012, 21:58 | Сообщение # 2
участник
Сейчас нет на сайте
Суть такова:
Правильность вложенности.
Бежим по файлу:
1. Если встречаем # FOR ID=, кладем в стек (который изначально пуст) что-то, что однозначно идентифицирует данный цикл (идентификатор, насколько я понял).
2. Если встречаем # NEXT ID, пытаемся достать из стека последний добавленный в него элемент.
2.1. Если при этом стек уже пуст, то найдена ошибка - попытка закрыть несуществующий цикл.
2.2. Если то, что мы достали, не совпадает с идентификатором из # NEXT ID, то найдена ошибка - несоответствие FOR и NEXT.
2.3. Если совпадает, то бежим по файлу дальше.
3. Если файл кончился:
3.1. Стек пуст - ошибок не найдено.
3.2. Стек не пуст - ошибка - незакрытый(е) цикл(ы).

Сдвиг позиций (с учетом того, что проверка на правильность уже произведена)
1. Копируем содержимое файла в память, стек пуст.
2. Бежим по строчкам:
2.1. Если текущая строчка не содержит ни FOR, ни NEXT, то пишем ее в файл с отступом равным 2*(текущий размер стека).
2.2. Если содержит FOR, пишем с тем же отступом, а потом добавляем что-нибудь в стек (идентификатор, например).
2.3. Если содержит NEXT, удаляем последний элемент из стека, а после этого пишем с тем же отступом.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг