Задача - реализовать конечный автомат по разбору строки, она сделана

Тема в разделе "C/C++/C#", создана пользователем Tronof, 8 янв 2011.

  1. Tronof

    Tronof Гость

    Требовалось на С/С++ реализовать конечный автомат по разбору введенной строки. Я это сделал но есть проблемы с выводом.
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Задание"</div></div><div class="sp-body"><div class="sp-content">Входные данные: Вводится строка, по виду представляющая собой команду из командной строки
    Правила:
    Вводится "команда" и еще дополнительно можно ввести "параметры команды", "ключи" и "параметры ключей".
    Последовательность: Команда, параметры команды, ключи, параметры ключей.
    Команда вводится обязательно, остальное по желанию.
    Команда состоит из любой последовательности латинских букв (A-Z, a-z).
    Параметры команды и параметры ключей состоят из любых символов, кроме "<", ">", ":", "?".
    Параметров команды и параметров ключей может быть несколько.
    Перед ключом должно стоять тире. Тире и сам ключ пишутся слитно
    Ключи заранее определены:
    -a (обязательно с параметром)
    -r (обязательно с параметром)
    -p (обязательно с параметром)
    -n (либо с параметром либо без параметра)
    -m (либо с параметром либо без параметра)
    -l (либо с параметром либо без параметра)
    -s (либо с параметром либо без параметра)
    -c (обязательно без параметра)
    Команда, параметры команды, ключи, параметры ключей должны быть разделены минимум одним пробелом
    Параметры команды и параметры ключей могут писаться внутри кавычек. Все, что написано внутри кавычек считается единым параметром. Внутри кавычек могут встречаться пробелы.
    Пробелы реализованы в виде знака подчеркивания: _
    Выходные данные:
    Автомат должен определить:
    1) соответствует ли введенная строка правилам
    2) что из введенного команда, что параметры команды, что ключи, что параметры ключей

    Пример:
    Ввод:
    hg_"ctr"_-a_pt_s_"s_dv"_-r_"c"
    Вывод:
    Все верно!
    hg - команда
    "ctr" - параметр команды
    -a - ключ
    pt - параметр ключа
    s - параметр ключа
    "s_dv" - параметр ключа
    -r - ключ
    "c" - параметр ключа

    Код: http://paste.org.ru/?8a4479

    У меня почему то не выполняются строки кода: 338, 354, 356, 383, 385, 405, 419, 426.
    Такое чувство что не выполняются условия. Это как раз тот самый вывод, которой показывает где команда, где ключи, где параметры.
    Если бы эти строки выполнялись, задача была бы решена.

    Вопрос: Почему не выполняются эти строки кода?
    Как заставить их выполняться?
    Буду очень благодарен тем, кто хоть чем то поможет.
     
  2. Rififi

    Rififi Гость

    Используй отладочный вывод, чтобы понять логику программы.

    также читать про магические числа
     
  3. Tronof

    Tronof Гость

    Rififi, не могли бы вы по-подробнее объяснить - как использовать отладочный вывод?
     
  4. Rififi

    Rififi Гость

    как использовать отладочный вывод?

    в важных с твоей точки зрения участках программы расставить вызовы функций printf/std::cout, которые выводят значения переменных на консоль.
    по мере выполнения программы, сравнивать полученные значения с ожидаемыми.
     
  5. Tronof

    Tronof Гость

    А так вот как это правильно называется! Я когда применял этот метод, не задумывался что это общепринятая практика, и даже свое отдельное название имеет ;)

    Кстати в MS Visual Studio нажав F11 можно вызвать отладочный режим и так же смотреть все эти значения
     
Загрузка...
Похожие Темы - Задача реализовать конечный
  1. Facktor88
    Ответов:
    1
    Просмотров:
    1.017
  2. Янчик
    Ответов:
    0
    Просмотров:
    489
  3. TrishaRay
    Ответов:
    1
    Просмотров:
    782
  4. elzim
    Ответов:
    0
    Просмотров:
    932
  5. ShaoKahn
    Ответов:
    1
    Просмотров:
    1.125

Поделиться этой страницей