- ベストアンサー
C++初心者の疑問:配列で値の取得方法は?
- C++初心者が配列で値の取得方法について悩んでいます。配列に値を入れると対応する値を取得したいのですが、どのような方法がありますか?
- 配列に「緑」という値を入れると「メロン」という対応する値を取得したいです。既存の方法では「2」と入力すると「メロン」が返ってくるようですが、他の方法はありますか?
- 私は関数を作成して、「緑」を入力すると「2」という値を返す方法を考えましたが、どうもしっくりきません。他に良い方法はないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#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; }
その他の回答 (2)
- sankaku197
- ベストアンサー率47% (29/61)
これは連想配列と呼ばれるもので、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; }
お礼
丁寧に回答してくださってありがとうございます! enum使うとわざわざ数字を返してくれる関数を作らなくてすみますね! いろんな方法がありますね! ありがとうございます★
- Tacosan
- ベストアンサー率23% (3656/15482)
map
お礼
mapっていうのがあるんですね。 調べてみます。 ありがとうございます!
お礼
わ~丁寧に回答してくださってありがとうございます。 文字列の比較をやっているんですね! 配列を構造体にするのもなるほどって思いました。 ありがとうございます。