• 締切済み

配列の練習問題

#include<iostream> using namespace std; //count関数の宣言 int count(char str[], char ch); int main() { char str[100]; char ch; cout << "文字列を入力して下さい。\n"; cin >> str; cout << "文字列から探す文字を入力して下さい。\n"; cin >> ch; int c = count(str, ch); cout << str << "の中に" << ch << "は" << c << "個あります。\n"; return 0; } //count関数の定義 int count(char str[], char ch) { int i = 0; int c = 0; while (str[i]) { if (str[i] == ch) c++; i++; } return c; } こんにちは。 この問題の解答のプログラムの意味がイマイチ解らないので良かったら教えて下さい。 確認がてらに質問します。 よろしくお願いします。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>基本的に私はプログラムを丸暗記ではなく意味を理解して覚えています。 それは良いことです。 しかし、設問に対する回答のプログラムと言うニュアンスですが設問が提示されていないのでプログラムが設問に対して納得ができる動作になっているか否かの評価ができません。 あなたが納得できない内容も述べられていませんので解説できないのが現状です。 ソースコードから読み取れる動作は長い文字列を入力した後に検索する文字を入力すると長い文字列の中に検索する文字が何個有るかを調べて結果を表示するもののようです。 例えば 最初に「ABCDEFGEH」と入力して、検索する文字に「E」を入力すると 「ABCDEFGEHの中にEは2個有ります。」 ということです。 何処が納得できませんか?

situmonyou4989
質問者

お礼

回答ありがとうございます。 あくまで全体のプログラムの意味ではなく個々のプログラムとしての意味を 質問したのですが、それもNo.1のcametanさんがやってくれたので 問題の個々のプログラムの動作の意味の確認はできたと思います。 bunjiiさんの言っていたことは、理解できますが、これ以上この質問に関しては質問することがないのでそろそろ締め切ります。 お手数かけてすみませんでした、ありがとうございます。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>この問題の解答のプログラムの意味がイマイチ解らないので良かったら教えて下さい。 「この問題」が提示されていませんが補足できますか? 「回答のプログラム」とは提示のソースコードのことですか? C++のソースのようですね。 コンパイルしてバイナリファイルを実行したときどのような結果になるか説明されていなかったのですか? イマイチ分からない箇所を提示して頂ければあなたの知りたいことが分かりますので解説できると思います。 説明できないときはソースコードが載っているサイト(URL)を提示してください。

situmonyou4989
質問者

お礼

「解答のプログラム」とは提示のソースコードのことですか? そうです、このソースコードの事です、ややこしくしてしまいすみません。 基本的に私はプログラムを丸暗記ではなく意味を理解して覚えています。 でもある程度は覚えて、後は数学のようにこれはこうだからと公式のように割り切るしかないんでしょうかねー・・・。

回答No.1

//count関数の定義 //文字列strの中に文字chが何個あるのか調べるプログラム // count関数は引数に文字列strと文字chの二つを取る int count(char str[], char ch) {   int i = 0; // 文字列(配列str)の添字の初期値(i = 0番目)   int c = 0; // 与えられた文字chの個数c(初期値は当然0)   while (str[i]) { // 文字列(配列str)の中身を一個一個ループしながら調べていく     if (str[i] == ch) // 文字列(配列str)の中身のi番目が文字chだったら       c++; // 個数cを1増やす     i++; // 文字列(配列str)の次の中身へ移る   }   return c; // 文字列が無くなったら文字chの個数cを返す }

situmonyou4989
質問者

お礼

回答ありがとうございます、 参考にさせて頂きます。

関連するQ&A