C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

指定されたソースコードを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)を入力し、文字列のサイズを計算して、variableという名前の長さに格納します。

  • データを関数Rearrangement(str、length)に渡します。

  • 関数Rearrangement(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デクリメントします。

    • IF str [i]が'('であることを確認してから、カウントを0に設定し、括弧を1つインクリメントします。

    • if str [i]が')'であることを確認してから、括弧を1だけデクリメントします。

    • 括弧が0より大きい場合はチェックし、str_1をstr_1 +str[i]に設定します。それ以外の場合は、str [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'に設定します。

    • ループFORを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;
}

  1. 指定された数値の桁を合計するC++プログラム

    これは、C++言語で桁の合計を計算する例です。 例 #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {       s = s + x % 10;       x = x / 10;

  2. 最高のC++コードフォーマッタ/ビューティファイア?

    適切なインデントでコードまたはフォーマットを美化するC++コードフォーマッターまたはビューティファイアーツールは非常にたくさんあります。 C++コードフォーマッタ/ビューティファイアは次のようにリストされています- C++コードフォーマッタ/ビューティファイア 説明 アスタイル これはソースコードフォーマッタです。 C ++、Java、その他の言語で使用できます。最新バージョンは2.03で、2013年4月にリリースされました。 Clang-Format これはclangコンパイラと一緒のコマンドラインツールです。これはオープンソースツールであり、C ++、Pythonでプログラ