پارس‌کدرز چگونه کار می‌کند؟

از پارس‌کدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.

پارس‌کدرز خریداران یا کارفرمایان را به مجری‌ها /فریلنسرهای خبره‌ای متصل می‌کند که برای انجام پروژه آماده هستند.

پروژه سی پلاس پلاس(28078)+

سه سال پیش منتشر شده

تعداد بازدید: 359

کد پروژه: 284694


شرح پروژه

سلام وقت بخير كدي به زبان سي پلاس پلاس دارم اما داراي مشكل هستش ميتونيد اصلاحش كنيد؟

#include<iostream>

 #include<fstream>

 #include<string>

 #include<vector>

 using namespace std;

/*

 function to read grammar from a file

 the function pushes each production in vector pro

 */

 void ReadGrammar(string file, vector<string>& pro)

 {

       string line;

       ifstream myfile;

       myfile.open(file);

       while (getline(myfile, line))

       {

             pro.push_back(line);

       }

 }

 /*

 function to check if we can derive string str[]

 using productions in pro

 */

 bool RecognizeString(vector<string>& pro, string str)

 {

       int n, v, s, p, i, l;

       n = str.length();

       v = pro.size();

       /*

       3D vector dp[n+1, n+1, 26]

       */

       vector< vector< vector<bool> > > dp(n + 1, vector< vector <bool> >(n + 1, vector<bool>(26, false)));

       /*

       the following loop recognize substrings of length 1

       */

       for (s = 0; s < n; ++s)

       {

             /* reading each production */

             for (i = 0; i < v; ++i)

             {

                   /*

                   if pro[i].length == 4 then it means that the production pro[i]

                   is in form P->a

                   pro[i][3] == str[s] checks if production P->a can recognize the character str[s]

                   */

                   if (pro[i].length() == 4 && pro[i][3] == str[s])

                   {

                         dp[1][s][pro[i][0] - 'A'] = true;

                   }

             }

       }

       /*

       the following loop recognize substrings of length > 1

       l is the length of the current substring

       */

       for (l = 2; l <= n; ++l)

       {

             /* s is the starting index of substring */

             for (s = 0; s < n - l + 1; ++s)

             {

                   /* p is the size of left partition of the substring */

                   for (p = 1; p <= l - 1; ++p)

                   {

                         /* reading each production */

                         for (i = 0; i < v; ++i)

                         {

                               /*

                               if pro[i].length() == 5 then it implies that the production is in form P->AB

                               dp[ p ][ s ][ pro[i][3]-'A'] checks if we can derive left partition using A

                               dp[ l-p ][ s+p ][ pro[i][4]-'A' ] checks if we can derive the right partition using B

                               */

                               if (pro[i].length() == 5 && dp[p][s][pro[i][3] - 'A'] && dp[l - p][s + p][pro[i][4] - 'A'])

                               {

                                     dp[l][s][pro[i][0] - 'A'] = true;

                               }

                         }

                   }

             }

       }

       return dp[n][0]['S' - 'A'];

 }

 int main()

 {

       vector<string> pro;

       string str;

        ofstream myfile("text.txt");

       ReadGrammar("text.txt", pro);

       cout << "Context-free Grammar" << endl;

       for (int i = 0; i < pro.size(); ++i)

       {

             cout << pro[i] << endl;

       }

       cout << "Enter a String: ";

       cin >> str;

       if (RecognizeString(pro, str))

             cout << "The input string can be derived using given CFL" << endl;

       else

             cout << "The input string cannot be derived using given CFL" << endl;

 }

Context-free Grammar

 S->AB

 A->a

 A->BB

 B->AS

 B->b

 Enter a String: aabbb

 The input string can be derived using given CFL

خروجي بايد به اين صورت باشه اما خروجي درستي تحويل نميده

+++

مهارت ها و تخصص های مورد نیاز


مهلت برای انجام

1روز

وضعیت مناقصه

بسته


درباره کارفرما

عضویت دوازده سال پیش

55059 پروژه ثبت شده ،
26 پروژه در حال انجام ،
5 پروژه آماده دریافت پیشنهاد ،
نرخ پذیرش پیشنهاد 15%

برای پیدا کردن پروژه‌های مشابه ثبت نام کنید و پروفایل خود را بسازید.

ورود با گوگل
یا
نام نباید خالی باشد.
نام خانوادگی نباید خالی باشد.

نیاز به استخدام فریلنسر یا سفارش پروژه مشابه دارید؟

سفارش پروژه مشابه

نیاز به استخدام فریلنسر یا سفارش پروژه مشابه دارید؟

سفارش پروژه مشابه

قادر به انجام این پروژه هستید؟

ثبت نام کنید

متأسفانه مهلت ارسال پیشنهاد این پروژه به پایان رسیده و پروژه بسته شده است؛ اما فرصت‌های متعددی در سایت موجود می‌باشد.

سری به پروژه‌های مشابه بزنید

روش کار در پارس‌کدرز

به رایگان یک حساب کاربری بسازید

مهارت‌ها و تخصص‌های خود را ثبت کنید، رزومه و نمونه‌کارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.

به شیوه‌ای که دوست دارید کار کنید

برای پروژه‌های دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصت‌های شغلی منحصر به فرد دسترسی پیدا کنید.

با اطمینان دستمزد دریافت کنید

از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.

می‌خواهید شروع به کار کنید؟

یک حساب کاربری بسازید


بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارت‌های شما است.

پیدا کردن کار (پروژه)

تماشای دمو روش کار