हमें एक स्ट्रिंग प्रकार का चर दिया गया है, मान लीजिए, str जिसका उपयोग स्रोत कोड को संग्रहीत करने के लिए किया जाएगा फिर स्ट्रिंग का आकार गणना करें और इसे फ़ंक्शन में पास करें। कार्य है दिए गए स्रोत कोड को पुनर्व्यवस्थित करना और फिर परिणाम प्रिंट करना।
विभिन्न इनपुट-आउटपुट परिदृश्य
इनपुट - string 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; } इनपुट - string 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 और स्ट्रिंग का आकार गणना करें और इसे length नामक चर में संग्रहीत करें।
डेटा को फ़ंक्शन Rearrangement(str, length) में पास करें।
फ़ंक्शन Rearrangement(arr, length) के अंदर
एक स्ट्रिंग प्रकार का चर घोषित करें, मान लीजिए, str_1 और पूर्णांक प्रकार के चर Parenthesis को 0, Braces को 0, count को 0, i को 0 और j को 0 के रूप में।
do-WHILE शुरू करें। अंदर, जांचें यदि str[i] '#' है OR str[i] '<' है OR str[i] '>' है OR str[i] ';' है OR str[i] '}' है OR str[i] '{' है OR str[i] '(' है OR str[i] ')' है तो जांचें यदि str[i] '{' है तो Braces को 1 से बढ़ाएं।
जांचें यदि str[i] '}' है तो Braces को 1 से घटाएं।
जांचें यदि str[i] '<' है AND Parenthesis 0 है तो count को 1 से बढ़ाएं।
जांचें यदि str[i] '>' है AND Parenthesis 0 है तो count को 1 से घटाएं।
जांचें यदि str[i] '(' है तो count को 0 सेट करें और Parenthesis को 1 से बढ़ाएं।
जांचें यदि str[i] ')' है तो Parenthesis को 1 से घटाएं।
जांचें यदि Parenthesis 0 से बड़ा है तो str_1 को str_1 + str[i] सेट करें। अन्यथा, जांचें यदि str[i] ')' है तो str_1 को str_1 + str[i] सेट करें।
अन्यथा यदि, str[i] '{' है OR str[i] '}' है तो str_1 को str_1 + '\n', str_1 को str_1 + str[i] और str_1 को str_1 + '\n' सेट करें।
अन्यथा यदि, count 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 तक str_1 स्ट्रिंग की लंबाई से कम होने तक FOR लूप शुरू करें। लूप के अंदर, 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; }