Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

入力(a、b)からの「a」で開始および終了するDFAを構築するプログラム


DFAは、DeterministicFiniteAutomataの略です。これは、アクセプターに基づいて、またはストリングを受け入れる有限状態マシンです。

ここでは、で始まり、で終わる文字列を受け入れるDFAを作成します。入力はセット(a、b)からのものです。これに基づいて、DFAを設計します。それでは、DFAによって受け入れられるいくつかの有効なケースと無効なケースについて説明しましょう。

DFAで受け入れられる文字列:ababba、aabba、aa、a。

DFAで受け入れられない文字列:ab、b、aabab。

このプログラムは、で始まり、で終わる文字列をチェックします。このDFAは、で始まり、で終わるすべての文字列を受け入れます。コードは最初と最後の要素が等しいかどうかをチェックし、その間のすべてを(a、b)から休ませることができます。

#include <iostream>
#include <string.h>
using namespace std;
int main(){
   char str[] = {"ababba"};
   int lenght = strlen(str);
   if(str[0] == 'a' && str[lenght-1] == 'a'){
      printf("Accepted");
      else{
         printf("Rejected");
         return 0;
      }
   }
}

出力

Accepted

  1. C言語のループ制御ステートメントとは何ですか?フローチャートとプログラムで説明する

    ループ制御ステートメントは、一連のステートメントを繰り返すために使用されます。それらは次のとおりです- forループ whileループ do-whileループ forループ 構文は次のとおりです- for (initialization ; condition ; increment / decrement){    body of the loop } フローチャート ループのフローチャートは次のとおりです- 初期化は通常、ループ制御変数を設定するために使用される割り当てステートメントです。 条件は、ループがいつ終了するかを決定する関係式です。

  2. Cプログラムのリンクリストの最後からn番目のノードのプログラム

    n個のノードがある場合、タスクはリンクリストの最後からn番目のノードを印刷することです。プログラムは、リスト内のノードの順序を変更してはなりません。代わりに、リンクリストの最後からn番目のノードのみを出力する必要があります。 例 Input -: 10 20 30 40 50 60    N=3 Output -: 40 上記の例では、最初のノードからカウントnノードまでのノードがトラバースされます(10、20、30、40、50、60)。したがって、最後から3番目のノードは40です。 リスト全体をトラバースする代わりに、この効率的なアプローチに従うことができます-