文を逆順にする

C++C++Beginner

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、再帰を使って任意の入力文を逆順にする C++ プログラムを段階的に学びます。このプログラムはユーザーから入力文を受け取り、逆順の文を出力します。

必要なライブラリをインクルードする

C++ では、cincout のような標準入出力ストリームオブジェクトを使用するには、iostream ライブラリをインクルードする必要があります。そのため、main.cpp ファイルの先頭に次のコードブロックを追加します。

#include <iostream>
using namespace std

逆順関数を宣言する

このプログラムでは、文字列を再帰的に逆順にする関数が必要です。using namespace std; 文の後に次のコードブロックを追加します。

void reverse(const string& a);

main 関数を定義する

ご存知のように、main 関数はプログラムのエントリーポイントです。main 関数では、ユーザーに文を入力してもらい、その文を reverse 関数に渡します。

int main() {
  string str;

  cout << "Please enter a sentence: ";
  getline(cin, str);

  reverse(str);

  return 0;
}

ここでは、ユーザーに文を入力してもらい、その後 reverse 関数を呼び出し、入力された文を引数として渡しています。

reverse 関数を定義する

次に、先ほど宣言した reverse 関数を定義する必要があります。入力された文を逆順にするために再帰を使用します。ここに関数の実装を示します。

void reverse(const string& str) {
  size_t numOfChars = str.size();

  if(numOfChars == 1) {
    cout << str << endl;
  }
  else {
    cout << str[numOfChars - 1];
    reverse(str.substr(0, numOfChars - 1));
  }
}

この関数では、まず str.size() を使って入力文字列のサイズを計算します。文字列のサイズが 1 の場合、それは基本ケースであり、入力文の最後の文字を単に出力します。それ以外の場合、最後の文字を出力した後、最後の文字を除いた文字列を使って再帰的に reverse 関数を呼び出します。

コンパイルと実行

プログラムの記述は完了しました。次に、コンパイルと実行を行います。~/project ディレクトリでターミナルを開き、以下のコマンドを使用してコードをコンパイルします。

g++ main.cpp -o main

このコマンドにより、main という名前の実行可能ファイルが生成されます。次に、以下のコマンドを使用してプログラムを実行します。

./main

プログラムを正常に実行した後、以下のような出力が表示されます。

Please enter a sentence: Study tonight
thgnot ydutS

まとめ

この実験では、再帰を使って文を逆順にする C++ プログラムを書く方法を学びました。入力された文を逆順にするための再帰を使用する reverse 関数を実装し、その関数を main 関数で入力文を引数として呼び出しました。最後に、ターミナルでプログラムをコンパイルして実行して出力を確認しました。