締切済み

配列の練習問題

  • 暇なときにでも
  • 質問No.9539136
  • 閲覧数155
  • ありがとう数6
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 92% (61/66)

#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;
}
こんにちは。
この問題の解答のプログラムの意味がイマイチ解らないので良かったら教えて下さい。
確認がてらに質問します。
よろしくお願いします。

回答 (全3件)

  • 回答No.3

ベストアンサー率 43% (3407/7813)

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

例えば
最初に「ABCDEFGEH」と入力して、検索する文字に「E」を入力すると
「ABCDEFGEHの中にEは2個有ります。」
ということです。
何処が納得できませんか?
お礼コメント
situmonyou4989

お礼率 92% (61/66)

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

ベストアンサー率 43% (3407/7813)

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

お礼率 92% (61/66)

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

ベストアンサー率 61% (148/239)

//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

お礼率 92% (61/66)

回答ありがとうございます、
参考にさせて頂きます。
投稿日時 - 2018-09-21 04:50:11
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ