【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】

なにやら思いつかなかったのでこちらで相談します。

配列のaと変数bがこんな感じだったとします。

int a[4]={1,3,4,7};
b=6;

もしbが配列aのどの数字にも当てはまらないならこうしますよ
もしbが配列aのどれかの数字に当てはまるならこうしますよ

といったプログラムを作りたいのですが短く処理できる
プログラムを思いつきません。(理論演算子を使えば長くなる)

どうすれば短く処理できますか?

A 回答 (1件)

C++なら、


#include <algorithm>

int main(int argc, char** argv)
{
  int a[4] = {1, 3, 4, 7};
  int b = 6;
  if (std::find(a, a + 4, b) == a + 4){
    printf("どれにも当てはまらない\n");
  } else {
    printf("どれかに当てはまる\n");
  }
  return 0;
}

Cなら、
int main(int argc, char** argv)
{
  int a[4] = {1, 3, 4, 7};
  int b = 6;
  int found = 0;
  int i;

  for (i = 0; i < 4; i++){
    if (a[i] == b){
      found = 1;
      break;
    }
  }
  if (found){
    printf("どれかに当てはまる\n");
  } else {
    printf("どれにも当てはまらない\n");
  }
  return 0;
}

この回答への補足

すみません
よく考えたらswitchを使えば簡単とか言う答えが来ると思ったのですが
例として書いたのがint 型ではまずかったですね

実際は 文字列での 型で聞きたかったのですが、どうやら心配が杞憂だったようですね

Cのほうです
開発可能なパソコンに戻して試してみますね
ありがとうございました。

補足日時:2012/12/22 07:21
    • good
    • 1
この回答へのお礼

無事に文字列でもできました

while で見かけた手法だったのですが変数に1を入れての判定はifでもできるんですね

お礼日時:2012/12/22 16:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A