12月19日

モデル

文字列マッチングをする.

   状態遷移図G1

入力

文字列 ω

出力

ωに“SAKURA”が入っていたら“hit”を出力
入っていなければ“not found”を出力

モデル

状態遷移図

G1

 

 

 

動作

初期化:状態を初期状態にする
遷移:
ωから1文字読み状態遷移図に従い、次の状態に遷移する.
終了:
ω上の文字を読み終わった時、状態q6 ⇒“hit”を出力
それ以外の状態 ⇒“not found”を出力


G1の動作例
入力:ω=“NUSAKURA”
状態遷移

 

流れ図

 

 

 

#include<stdio.h>

int main(void){

   int state = 0;

   char string[100];

   char symble;

   int i;

   scanf("%s", string);

   for(i=0; string[i]!='\0';i++){

      symble = string[i];

      if(state==0){

         if(symble=='S'){

           state = 1;

         }

      }else if(state==1){

         if(symble=='A'){

            state = 2;

         }else{

            state = 0;

         }

      }else if(state==2){

         if(symble=='K'){

            state = 3;

         }else{

            state = 0;

         }

      }else if(state==3){

         if(symble=='U'){

            state = 4;

         }else{

            state = 0;

         }

      }else if(state==4){

         if(symble=='R'){

            state = 5;

         }else{

            state = 0;

         }

      }else if(state==5){

         if(symble=='A'){

            state = 6;

         }else{

            state = 0;

         }

      }else if(state==6){

         state = 6;

      }

   }

   if(state==6){

      printf("hit!");

   }else{

      printf("not found");

   }

}

 

 

例題

 

課題

テーマ:状態遷移図と文字列マッチング

(問題1)各自の苗字を検索する状態遷移図Gを書け

(問題2)次のプログラムを作れ

入力 文字列 ω
出力 ωに苗字が入っている⇒“hit”
   入っていない⇒“not found”

提出物

仕様書、ソース、実行例

締め切り