在 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并计算字符串的大小并将其存储在一个名为变量的长度中。
将数据传递给函数Rearrangement(str,length)。
函数内部Rearrangement(arr,length)
声明一个字符串类型变量,比如str_1和整数类型变量,括号为0,大括号为0,计数为0,i为0,j为0。
开始做-WHILE。在里面,检查IFstr[i]is'#'ORstr[i]is'<'ORstr[i]is'>'ORstr[i]is';'ORstr[i]is'}'ORstr[i]is'{'ORstr[i]is'('ORstr[i]is')'然后检查IFstr[i]is'{'然后增加大括号1。
检查IFstr[i]是'}'然后将大括号减1。
检查IFstr[i]是'<'ANDParenthesis是0然后将计数增加1。
检查IFstr[i]is'>'ANDParenthesisis0然后将计数减1。
检查IFstr[i]是'('然后将计数设置为0并将括号增加1。
检查IFstr[i]是')'然后将括号递减1。
检查IF括号大于0,然后将str_1设置为str_1+str[i]。否则,检查IFstr[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开始循环FOR,直到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; }