কম্পিউটার

C++ এ প্রদত্ত সোর্স কোডটি পুনরায় সাজান


আমাদের একটি স্ট্রিং টাইপ ভেরিয়েবল দেওয়া হয়েছে, ধরা যাক, str যা সোর্স কোড সংরক্ষণ করতে ব্যবহার করা হবে তারপর স্ট্রিংয়ের আকার গণনা করুন এবং এটি ফাংশনে পাস করুন। কাজ হল প্রদত্ত সোর্স কোড পুনরায় সাজানো এবং তারপর ফলাফল প্রিন্ট করা।

আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি -

ইনপুট − স্ট্রিং str =

"#include <bits/stdc++.h>
using namespace std;
int main()"
   "{ int sum, first, second; sum = first + second; printf(\"%d\", c);"
   " return 0;}"

আউটপুট

#include <bits/stdc++.h>
using namespace std;
int main(){
   int sum, first, second;
   sum = first + second;
   printf("%d", c);
   return 0;
}

ইনপুট − স্ট্রিং str =

"#include<bits/stdc++.h>
 using namespace std;
int main()"
   "{ printf(\"%d\", c);"
   " return 0;}"

আউটপুট

#include<bits/stdc++.h>
using namespace std;
int main(){
   printf("%d", c);
   return 0;
}

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

  • স্ট্রিং টাইপের একটি ভেরিয়েবল ইনপুট করুন, ধরা যাক, str এবং একটি স্ট্রিংয়ের আকার গণনা করুন এবং এটিকে ভেরিয়েবল নামে একটি দৈর্ঘ্যে সংরক্ষণ করুন।

  • পুনঃবিন্যাস (str, length) ফাংশনে ডেটা পাস করুন।

  • ফাংশনের ভিতরে পুনঃবিন্যাস(arr, length)

    • একটি স্ট্রিং টাইপ ভেরিয়েবল ঘোষণা করুন, ধরা যাক, str_1 এবং ইন্টিজার টাইপ ভেরিয়েবলগুলি বন্ধনী থেকে 0, বন্ধনী থেকে 0, গণনা 0, i থেকে 0 এবং j থেকে 0৷

    • শুরু করুন-যখন. ভিতরে, চেক করুন যদি str[i] '#' হয় বা str[i] হয় '<' OR str[i] is '>' OR str[i] is ';' বা str[i] হল '}' বা str[i] হল '{' OR str[i] is '(' OR str[i] is ')' তারপর চেক করুন যদি str[i] '{' হয় তাহলে ইনক্রিমেন্ট করুন 1 দ্বারা ধনুর্বন্ধনী.

    • str[i] '}' হলে চেক করুন তারপর বন্ধনীগুলিকে 1 দ্বারা হ্রাস করুন।

    • চেক করুন যদি str[i] '<' হয় এবং বন্ধনী 0 হয় তাহলে গণনাটি 1 দ্বারা বৃদ্ধি করুন।

    • চেক করুন যদি str[i] '>' হয় এবং বন্ধনী 0 হয় তাহলে গণনাটি 1 দ্বারা হ্রাস করুন।

    • চেক করুন যদি str[i] '(' হয় তাহলে গণনা 0 এ সেট করুন এবং বন্ধনীটি 1 দ্বারা বৃদ্ধি করুন।

    • str[i] ')' হলে চেক করুন তারপর বন্ধনীটি 1 দ্বারা হ্রাস করুন।

    • 0 এর চেয়ে বড় বন্ধনী পরীক্ষা করুন তারপর str_1 কে str_1 + str[i] এ সেট করুন। অন্যথায়, str[i] ')' হলে চেক করুন তারপর str_1 কে str_1 + str[i] এ সেট করুন।

    • অন্যথায়, str[i] হল '{' অথবা str[i] হল '}' তারপর str_1 কে str_1 + '\n', str_1 থেকে str_1 + str[i] এবং str_1 থেকে str_1 + '\n' সেট করুন।

    • অন্যথায়, গণনা 0-এর বেশি হলে str_1-এ str_1 + str[i] সেট করুন।

    • অন্যথায়, str[i] '#' হলে str_1 কে str_1 + '\n' এবং str_1 কে str_1 + str[i] সেট করুন।

    • অন্যথায়, str_1 কে str_1 + str[i] এবং str_1 কে str_1 + '\n' এ সেট করুন।

    • অন্যথায়, str_1 কে str_1 + str[i] এ সেট করুন এবং i কে 1 দ্বারা বৃদ্ধি করুন।

    • str_1 কে str_1 + '\0' এ সেট করুন।

    • i থেকে 0 পর্যন্ত লুপ শুরু করুন যতক্ষণ না i একটি str_1 স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে কম হয়। লুপের ভিতরে, str_1[i]।

      প্রিন্ট করুন
  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(string str, int length){
   string str_1;
   int Parenthesis = 0;
   int Braces = 0;
   int count = 0;
   int i = 0;
   int j = 0;
   do{
      if(str[i] == '#' || str[i] == '<' || str[i] == '>' || str[i] == ';' || str[i] == '}' || str[i] == '{'   || str[i] == '(' || str[i] == ')'){
         if(str[i] == '{'){
            Braces++;
         }
         if(str[i] == '}'){
            Braces--;
         }
         if(str[i] == '<' && Parenthesis == 0){
            count++;
         }
         if(str[i] == '>' && Parenthesis == 0){
            count--;
         }
         if(str[i] == '('){
            count = 0;
            Parenthesis++;
         }
         if(str[i] == ')'){
            Parenthesis--;
         }
         if(Parenthesis > 0){
            str_1 = str_1 + str[i];
         }
         else{
            if(str[i] == ')'){
               str_1 = str_1 + str[i];
            }
            else if(str[i] == '{' || str[i] == '}'){
               str_1 = str_1 + '\n';
               str_1 = str_1 + str[i];
               str_1 = str_1 + '\n';
            }
            else if(count > 0){
               str_1 = str_1 + str[i];
            }
            else if(str[i] == '#'){
               str_1 = str_1 + '\n';
               str_1 = str_1 + str[i];
            }
            else{
               str_1 = str_1 + str[i];
               str_1 = str_1 + '\n';
            }
         }
      }
      else{
            str_1 = str_1 + str[i];
         }
         i++;
   }while (i < length);
    str_1 = str_1 + '\0';
    for(i = 0; i < str_1.length(); i++){
       cout<< str_1[i];
    }
}
int main(){
      string str = "#include <bits/stdc++.h>using namespace std;int main()"
      "{ int sum, first, second; sum = first + second; printf(\"%d\", c);"
      " return 0;}";
      int length = str.length();
      Rearrangement(str, length);
      return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে

#include <bits/stdc++.h>
using namespace std;
int main(){
   int sum, first, second;
   sum = first + second;
   printf("%d", c);
   return 0;
}

  1. C++ এ একটি প্রদত্ত স্ট্রিং-এ “1(0+)1”-এর সমস্ত প্যাটার্ন খুঁজুন

  2. C++ এ প্রদত্ত প্রাইম দ্বারা nCr বিভাজ্য কিনা তা খুঁজুন

  3. একটি প্রদত্ত সংখ্যার সংখ্যা যোগ করার জন্য C++ প্রোগ্রাম

  4. সেরা C++ কোড ফরম্যাটার/বিউটিফায়ার?