- 締切済み
C言語 演習
こちらの問題です。 http://www4.uploader.jp/user/tyranoheya/images/tyranoheya_uljp00037.txt コンパイラ:gcc OS:linux どのようにしていいかまったくわからない状態です。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- tanma3
- ベストアンサー率58% (14/24)
ベタ作りでいいのであれば、以下のような流れでいいのではないかと。 1."DFA.def"より読込み込んだ情報以下のように格納する。 // DFA構造体定義 struct DFA { char symbol; int before; int after; }; static int initNumber; // 初期状態 static int allowList[n];// 最終状態の集合 static struct DFA defList[m]; // DFAリスト情報 ※上記nは説明便宜上です。"(状態は空白で区切る)"との仕様に基づき要素数を算出し動的メモリの確保をしていただければよいかと。 ※上記mは説明便宜上です。"((状態 記号 次の状態)のように3つの要素を空白で区切って書く.なお, 1行ごとに一つずつ遷移を書くこと) "との仕様に基づき要素数を算出し動的メモリの確保をしていただければよいかと。 最悪決め打ちでもいいですが、その場合は構造体の初期化は忘れないでくださいね。 2.条件をサーチする。 上記構造体内"symbol"を基準にして構造体最終までループさせ、条件合致を判定する。 以下のような感じの関数使えばいいと思います。 int CheckDFA(char data, int status) { int result = -100; int i; for(i=0; i<n i++) { if((defList[i].symbol == data) && (defList[i].before == status)) { result = defList[i].after; break; } } return result; } 3.最終判定実施。 上記2が途中で-1となり途中終了 or 最終結果が最終状態集合に合致 or 合致しない を判定出力。
- asuncion
- ベストアンサー率33% (2127/6289)
参考URL(先頭に h を補ってください)でのやりとりが 役に立つかもしれません。