首页 文章资讯内容详情

在 C++ 中重新排列给定的源代码

2026-06-02 1 花语

我们得到了一个字符串类型变量,比如说,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; }