在 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;
}