AC | B | D | E | |
a | B | B | B | B |
b | AC | D | E | AC |
この状態遷移表を用いて、引数として渡された文字列が、正規表現 (a|b)*abbにマッチするならば 1をそうでなければ 0を返す関数 int ababb(char*)を定義せよ。
プログラムはこんな感じ
#include <stdio.h> int table[?][?] = {?}; /* 遷移表を配列として表現 */ int ababb(char* str) { ? } int main(int argc, char** argv) { int i; for (i=1; i<argc; i++) { char* str = argv[i]; if (ababb(str)) { printf("%sは正規表現 (a|b)*abbにマッチします。\n", str); } else { printf("%sは正規表現 (a|b)*abbにマッチしません。\n", str); } } return 0; }
(難易度 A)引き算(-)と割り算(/)にも対応した計算プログラムを作成せよ。(単項演算子の-は考慮しなくて良い。)