はじめに
この実験では、再帰を使って任意の入力文を逆順にする C++ プログラムを段階的に学びます。このプログラムはユーザーから入力文を受け取り、逆順の文を出力します。
この実験では、再帰を使って任意の入力文を逆順にする C++ プログラムを段階的に学びます。このプログラムはユーザーから入力文を受け取り、逆順の文を出力します。
C++ では、cin
、cout
のような標準入出力ストリームオブジェクトを使用するには、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
関数で入力文を引数として呼び出しました。最後に、ターミナルでプログラムをコンパイルして実行して出力を確認しました。