हमें एक स्ट्रिंग प्रकार चर दिया जाता है, मान लीजिए, 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; }
इनपुट -स्ट्रिंग स्ट्र =
"#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, लंबाई) में पास करें।
-
समारोह के अंदर पुनर्व्यवस्था (गिरफ्तारी, लंबाई)
-
एक स्ट्रिंग प्रकार चर घोषित करें, मान लें, str_1 और पूर्णांक प्रकार चर को कोष्ठक के रूप में 0, ब्रेसिज़ से 0, 0 तक गिनें, i से 0 और j से 0.
-
प्रारंभ करें-जबकि। अंदर, जांचें कि क्या str [i] '#' है या str [i] '<' है या str [i] '>' है या str [i] है ';' या str[i] है '}' या str[i] है '{' या str[i] is '(' OR str[i] is ')' है, तो जांचें कि क्या str[i] '{' है, फिर वृद्धि करें 1.
. द्वारा ब्रेसिज़ -
जांचें कि IF str[i] '}' है तो ब्रेसेस को 1 से घटाएं।
-
जांचें कि क्या str[i] '<' है और कोष्ठक 0 है तो गिनती को 1 से बढ़ाएं।
-
जांचें कि क्या str[i] '>' है और कोष्ठक 0 है तो गिनती को 1 से घटाएं।
-
जांचें कि क्या str[i] '(' है, फिर गिनती को 0 पर सेट करें और कोष्ठक को 1 से बढ़ाएँ।
-
जांचें कि क्या str[i] is ')' है, फिर कोष्ठक को 1 से घटाएं।
-
जांचें कि क्या कोष्ठक 0 से बड़ा है, फिर str_1 को str_1 + str[i] पर सेट करें। ELSE, जांचें कि क्या str[i] is ')' है, फिर str_1 को str_1 + str[i] पर सेट करें।
-
ELSE IF, str[i] '{' या str[i] is '}' है तो str_1 को str_1 + '\n', str_1 से str_1 + str[i] और str_1 से str_1 + '\n' पर सेट करें।पी>
-
ELSE IF, गिनती 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 को 1 से बढ़ाएँ।
-
str_1 को str_1 + '\0' पर सेट करें।
-
एक str_1 स्ट्रिंग की लंबाई से कम होने तक i से 0 तक के लिए लूप प्रारंभ करें। लूप के अंदर, 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; }