重新排列给定的 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,计算字符串的大小并将其存储在一个名为 length 的变量中。
将数据传递给函数 Rearrangement(str, length)。
在函数 Rearrangement(arr, length) 内部:
声明一个字符串类型的变量,例如 str_1,以及整数类型的变量 Parenthesis(初始化为 0)、Braces(初始化为 0)、count(初始化为 0)、i(初始化为 0)和 j(初始化为 0)。
开始 do-WHILE 循环。在循环内部,检查 IF str[i] 是 '#' 或 '<' 或 '>' 或 ';' 或 '}' 或 '{' 或 '(' 或 ')',然后检查 IF str[i] 是 '{',则将 braces 加 1。
检查 IF str[i] 是 '}',则将 Braces 减 1。
检查 IF str[i] 是 '<' 且 Parenthesis 为 0,则将 count 加 1。
检查 IF str[i] 是 '>' 且 Parenthesis 为 0,则将 count 减 1。
检查 IF str[i] 是 '(',则将 count 设置为 0 并将 Parenthesis 加 1。
检查 IF str[i] 是 ')',则将 Parenthesis 减 1。
检查 IF Parenthesis 大于 0,则将 str_1 设置为 str_1 + str[i]。否则,检查 IF str[i] 是 ')',则将 str_1 设置为 str_1 + str[i]。
否则 IF,str[i] 是 '{' 或 '}',则将 str_1 设置为 str_1 + '\n',str_1 设置为 str_1 + str[i],str_1 设置为 str_1 + '\n'。
否则 IF,count 大于 0,则将 str_1 设置为 str_1 + str[i]。
否则 IF,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 开始循环,直到 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;
}
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP