C++でWoを判定するプログラムの書き方

ページ名:C__でWoを判定するプログラムの書き方

与えられた文字列が回文かどうかをC++で調べたい?回文とは、"madam "や "123321 "のように、後ろから読んでも前から読んでも同じように読める文字の集合のことです。ユーザーの文字や数字の入力を受けて、それが回文かどうかを判定し、答えを返すプログラムの書き方を紹介します。

方法1

セットアップ

  1. プログラムを書くのに使うテキストエディタを開く。このコードを書くのにメモ帳のような簡単なワープロを使ってもかまいませんが、エラー警告や読みやすくするための自動書式設定などの利点は得られません。
  2. プログラムに必要なライブラリを追加するプリプロセッサ指令を入力します。これらの指示文は、あなたのプログラムがすでにC++に組み込まれている2つの既存のライブラリを使用することをコンピュータに伝えます。iostreamライブラリには、コンソールへの入出力のコードが含まれています。文字列ライブラリには、テキスト文字列の作成と操作のためのコードが含まれています。これらのライブラリをインクルードすることで、すでに利用可能なリソースを活用できるため、プログラミングが容易になります。
  3. 使用する名前空間(標準名前空間)のusing文を入力する。入力したテキストは改行されます。このテキストは、後で出てくる特定のテキストについて、あなたがいくつかの省略された規約を使用していることをコンピュータに知らせるものです。例えば、このプロセスの後半では、"std::cout "とタイプする代わりに、"cout "とタイプするだけでよい。コメント(スラッシュが2つ続く文)は入力しないでください。
方法2

プログラムを作る

  1. main関数を入力する。このプログラムにはmain関数しかありません。右中括弧は、左中括弧を入力した後、ほとんどのテキストエディタで自動的に表示されます。開」「閉」の大文字と小文字を持つ記号(括弧"()"、大括弧"[]"、中括弧"{}"など)についても同様です。メイン関数内で入力したコードはすべて、自動的にインデントされ、配置を示し読みやすくなります。入力したコードの残りの部分が、この2つの中括弧の中にあることを確認してください。
    #includeImage:Write a C++ Program That Determines if a Word Is a Palindrome Step 5 Version 2.jpg|center #include using namespace std; //新しいテキストはここから始まる int main() { } //新しいテキストはここで終わる
  2. 必要な変数を宣言する。main関数の中括弧の中に、以下に示す新しいテキストを入力する。このテキストでは、"str"、"length"、"isPalindrome "を、それぞれ文字列、整数、ブール値を格納する変数として定義している。変数 "str "には、回文であるかどうかわからない単語が格納される。変数 "length "には単語の文字数が格納される。変数 "isPalindrome "には、その単語が回文かどうかが格納される。このプログラムでは、まず単語が回文であると仮定し、回文でないかどうかを調べる。回文でなければ、"isPalindrome "の値をfalseに変更する。
    Image:Write a C++ Program That Determines if a Word Is a Palindrome Step 6 Version 2.jpg|center #includeImage:Write a C++ Program That Determines if a Word Is a Palindrome Step 7 Version 2.jpg|center #include using namespace std; int main() { //新しいテキストはここから始まる string str; int length; bool isPalindrome = true; //新しいテキストはここで終わる }.
  3. ユーザーに入力を求めるプロンプトを入力する。 このテキストは、ユーザーに単語を入力するように知らせる。
    Image:Write a C++ Program That Determines if a Word Is a Palindrome Step 8 Version 2.jpg|center #includeImage:Write a C++ Program That Determines if a Word Is a Palindrome Step 9 Version 2.jpg|center #include using namespace std; int main() { string str; int length; bool isPalindrome = true; //新しいテキストはここから始まる cout << "Enter a word: "; //新しいテキストはここで終わる }.
  4. ユーザーから入力を得るためのコードを入力する。 このテキストはユーザーから入力を得て、先ほど作成した変数 "str "に入れる。
    Image:Write a C++ Program That Determines if a Word Is a Palindrome Step 10 Version 2.jpg|center #includeImage:Write a C++ Program That Determines if a Word Is a Palindrome Step 11 Version 2.jpg|center #include using namespace std; int main() { string str; int length; bool isPalindrome = true; cout << "Enter a word: "; //新しいテキストはここから始まる getline(cin, str); //新しいテキストはここで終わる }.
  5. ユーザーが入力した単語の長さを変数 "length "に格納するためにテキストを入力する。単語の長さは、コンピュータがいつ単語の文字に目を通すのをやめるかを知るために必要である。
    Image:Write a C++ Program That Determines if a Word Is a Palindrome Step 12 Version 2.jpg|center #includeImage:Write a C++ Program That Determines if a Word Is a Palindrome Step 13 Version 2.jpg|center #include using namespace std; int main() { string str; int length; bool isPalindrome = true; cout << "Enter a word: "; getline(cin, str); //ここから新しいテキストが始まる length = str.length(); //ここで新しいテキストが終わる }.
  6. 下に示す新しいテキストを入力して、単語を一文字ずつ調べるループを作成する。 できるだけ簡単に言うと、このテキストは、各文字と対応するミラー文字が一致するかどうかを調べるループを作成する。検査の回数は単語の大きさの半分なので、コードでは長さを2で割っている。左の中括弧をタイプすると、右の中括弧が再び自動的に現れるはずである。次の行は、この新しい中括弧の中に入力する。
    Image:Write a C++ Program That Determines if a Word Is a Palindrome Not Step 14 Version 2.jpg|center #include #include using namespace std; int main() { string str; int length; bool isPalindrome = true; cout << "Enter a word: "; getline(cin, str); length = str.length(); //新しいテキストはここから始まる for (int i = 0; i < (length / 2); i++) { } //新しいテキストはここで終わる } //新しいテキストはここで終わる
  7. 先ほど入力した中括弧の中に比較文を入力する。 この文は比較を行う。指定された文字("i "と表記)は、単語内の鏡像位置にある文字と比較される。例えば、"madam "という単語では、2つの "m "が比較され、次に2つの "a "が比較される。
    #int main() { string str; int length; bool isPalindrome = true; cout << "Enter a word: "; getline(cin, str); length = str.length(); for (int i = 0; i < (length / 2); i++) { //新しいテキストはここから始まる if (str[i] != str[(length - 1) - i]) isPalindrome = false; //新しいテキストはここで終わる } } }.
  8. isPalindrome "の値をテストするステートメントをタイプする。 もし問題の単語が回文であれば、変数 "isPalindrome "はtrueのままである。そうでなければ偽になる。この "cout "文は、"true "のインスタンスをユーザーに表示する。
    #int main() { string str; int length; bool isPalindrome = true; cout << "Enter a word: "; getline(cin, str); length = str.length(); for (int i = 0; i < (length / 2); i++) { if (str[i] != str[(length - 1) - i]) isPalindrome = false; } //ここから新しいテキストが始まる if (isPalindrome == true) cout << str << " is a palindrome" << endl; //ここで新しいテキストが終わる } //ここで新しいテキストが終わる
  9. 回文でない場合のコードを入力する。もし問題の単語が回文でなければ、変数 "isPalindrome "の新しい値は "false "となり、"else "ステートメントが実行され、その事実がユーザーに表示される。
    #int main() { string str; int length; bool isPalindrome = true; cout << "Enter a word: "; getline(cin, str); length = str.length(); for (int i = 0; i < (length / 2); i++) { if (str[i] != str[(length - 1) - i]) isPalindrome = false; } if (isPalindrome == true) cout << str << " is a palindrome" << endl; //ここから新しいテキストが始まる else cout << str << " is not a palindrome" << endl; //ここで新しいテキストが終わる }.
方法3

仕上げ

  1. return文を入力し、プログラムが正しく実行されたことをコンピュータに知らせる。main関数の最後の中括弧がこの文の後にあることを確認してください。標準的なテキストエディタを使用している場合、インデントとスペーシングは中括弧の中で自動的に行われるため、問題になる可能性は低くなります。
    #int main() { string str; int length; bool isPalindrome = true; cout << "Enter a word: "; getline(cin, str); length = str.length(); for (int i = 0; i < (length / 2); i++) { if (str[i] != str[(length - 1) - i]) isPalindrome = false; } if (isPalindrome == true) cout << str << " is a palindrome" << endl; else cout << str << " is not a palindrome" << endl; //新しいテキストはここから始まる return 0; //新しいテキストはここで終わる }.
  2. コードを確認してください。作成したコードをソフトウェア上で実行し、動作することを確認してください。どのように実行するかはソフトウェアによって異なります。
この記事は、CC BY-NC-SAで公開されている " How to Write a C++ Program That Determines if a Word Is a Palindrome or Not " を改変して作成しました。特に断りのない限り、CC BY-NC-SAの下で利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する

NG表示方式

NGID一覧