소스 코드를 저장하고 문자열의 크기를 계산하고 함수에 전달하는 데 사용할 문자열 유형 변수가 주어졌습니다. 주어진 소스 코드를 재배열한 다음 결과를 출력하는 작업입니다.
여기에 대한 다양한 입력 출력 시나리오를 살펴보겠습니다 -
입력 - 문자열 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; }
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
string형의 변수, 예를 들어 str을 입력하고 string의 크기를 계산하여 variable이라는 이름의 길이에 저장합니다.
-
데이터를 재배열(str, length) 함수에 전달합니다.
-
함수 내부 재정렬(arr, length)
-
문자열 유형 변수를 선언합니다. 예를 들어 str_1 및 정수 유형 변수를 괄호로 0으로, 중괄호를 0으로, 개수를 0으로, i를 0으로, j를 0으로 선언합니다.
-
do-WHILE을 시작합니다. 내부에서 str[i]가 '#'인지 또는 str[i]가 '<'인지 또는 str[i]가 '>'인지 또는 str[i]가 ';'인지 확인하십시오. OR str[i] is '}' OR str[i] is '{' OR str[i] is '(' OR str[i] is ')' 그런 다음 str[i]가 '{'인지 확인한 다음 중괄호 1.
-
str[i]가 '}'인지 확인한 다음 중괄호를 1만큼 감소시킵니다.
-
str[i]가 '<'이고 괄호가 0인지 확인한 다음 카운트를 1씩 증가시킵니다.
-
str[i]가 '>'이고 괄호가 0인지 확인한 다음 카운트를 1만큼 감소시킵니다.
-
str[i]가 '('인지 확인한 다음 count를 0으로 설정하고 괄호를 1씩 증가시킵니다.
-
str[i]가 ')'인지 확인한 다음 괄호를 1만큼 감소시킵니다.
-
IF 괄호가 0보다 큰지 확인한 다음 str_1을 str_1 + str[i]로 설정합니다. 그렇지 않으면 str[i]가 ')'인지 확인한 다음 str_1을 str_1 + str[i]로 설정하십시오.
-
ELSE IF, str[i]는 '{' OR 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를 1씩 증가시킵니다.
-
str_1을 str_1 + '\0'으로 설정합니다.
-
i에서 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; }