• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++ほぼ初心者です。配列で値の取得について)

C++初心者の疑問:配列で値の取得方法は?

このQ&Aのポイント
  • C++初心者が配列で値の取得方法について悩んでいます。配列に値を入れると対応する値を取得したいのですが、どのような方法がありますか?
  • 配列に「緑」という値を入れると「メロン」という対応する値を取得したいです。既存の方法では「2」と入力すると「メロン」が返ってくるようですが、他の方法はありますか?
  • 私は関数を作成して、「緑」を入力すると「2」という値を返す方法を考えましたが、どうもしっくりきません。他に良い方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.2

#include <stdio.h> #include <string.h> typedef struct { char color[10]; char name[20]; } fruit; int main(void) { fruit fruits[] = { { "赤", "リンゴ" }, { "黄", "バナナ" }, { "緑", "メロン" }, }; char color[10]; int num = sizeof(fruits) / sizeof(fruits[0]); int i; printf("果物の色は何色ですか? "), scanf("%s", color); for (i = 0; i < num; i++) { if (strcmp(fruits[i].color, color) == 0) { printf("%s色の果物は%sです。\n", fruits[i].color, fruits[i].name); break; } } if (i >= num) { printf("そういう色の果物はありません。\n"); } return 0; }

komakomachi
質問者

お礼

わ~丁寧に回答してくださってありがとうございます。 文字列の比較をやっているんですね! 配列を構造体にするのもなるほどって思いました。 ありがとうございます。

その他の回答 (2)

回答No.3

これは連想配列と呼ばれるもので、C++の場合No.1氏の通りmapを使うのが自然とされています。 詳しいことは「stl map」あたりでググってみて下さい。 今回の質問ならmapを使わなくても以下のような手でいけます。 #include <iostream> #include <string> using namespace std; enum color{ 赤, 黄, 緑, }; string fruit[] = { "リンゴ", "バナナ", "メロン" }; void main(){ cout << fruit[赤] << endl; cout << fruit[黄] << endl; cout << fruit[緑] << endl; }

komakomachi
質問者

お礼

丁寧に回答してくださってありがとうございます! enum使うとわざわざ数字を返してくれる関数を作らなくてすみますね! いろんな方法がありますね! ありがとうございます★

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

map

komakomachi
質問者

お礼

mapっていうのがあるんですね。 調べてみます。 ありがとうございます!

関連するQ&A

専門家に質問してみよう