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

C++で1行に連続する文字を一緒に印刷します


この問題では、文字列が与えられ、2つ以上の文字が連続している場合は、それらを1行にまとめて印刷するように同じ文字列を印刷する必要があります。それ以外の場合は、別の行に、つまり改行を付けて印刷します。

概念をよりよく理解するために例を見てみましょう。

Input : abcxstk
Output :
abc
x
st
k
説明 abc以降 順番に並んでいるので、1行に印刷されます。次に、順番になっていないxが来るので、ここに改行を追加します。次はxのシーケンスではないsなので、改行を追加します。次はtで、これはsと順番に印刷されます。次はtと連続していないkなので、改行を追加します。

ここでは、文字列内の前の要素を含む要素をチェックします。それらが順番に並んでいる場合は、通常どおりに印刷します。それ以外の場合は、要素を改行で印刷します。

それでは、このロジックに基づいてプログラムを作成しましょう

#include <iostream>
using namespace std;
int main(){
   string str = "stukfrpq";
   cout << str[0];
   for (int i=1; str[i]!='\0'; i++){
      if ((str[i] == str[i-1]+1) || (str[i] == str[i-1]-1))
         cout << str[i];
      else
         cout << "\n" << str[i];;
   }
   return 0;
}

出力

stu
k
f
r
pq

  1. C++でバイナリツリーを印刷する

    これらのルールに基づいて、m *n2D文字列配列に二分木を表示する必要があるとします- 行番号mは、指定された二分木の高さと同じである必要があります。 列番号nは常に奇数である必要があります。 ルートノードの値は、配置できる最初の行の真ん中に配置する必要があります。ルートノードが存在する列と行は、残りのスペースを2つの部分に分割します。これらは左下部分と右下部分です。左下の部分に左のサブツリーを印刷し、右下の部分に右のサブツリーを印刷する必要があります。ここで、左下部分と右下部分は同じサイズである必要があります。一方のサブツリーがnoneで、もう一方がnoneでない場合でも、noneサブツリ

  2. C++プログラミングでレベル順トラバーサルを1行ずつ印刷します。

    二分木が与えられた場合、関数はツリーのレベル順トラバーサルを行ごとに見つける必要があります。 レベル順トラバーサル:左ルート右。これは、最初にルートの値よりもノードの左の子を出力し、次に右の子に移動することを意味しますが、ここでは、左から開始して右で終了する行ごとに実行する必要があります。特定の二分木のノード。 上記の二分木は次の出力を生成します- Level 0: 3 Level 1: 2 1 Level 2: 10 20 30 アルゴリズム START Step 1 -> create a structure of a node as    struct