2017-07-22 11 views
0

array私はarrayを持っています。これには、教室のデータと、異なる時間の異なる酸素測定値が含まれています。したがって、ユーザーは特定の教室と時間を入力する必要があり、私のプログラムはその時間にその教室の酸素量をプリントアウトします。しかし、私はerrorを持っています。string arraystringを比較することはできません。誰かが私を助けることができますか?文字列を文字列配列内の要素と比較するにはどうすればよいですか?

cout << "Please enter the classroom: "; 
string classroom; 
cin >> classroom; 
cout << "Please enter the time: "; 
string time; 
cin >> time; 
cout << endl; 

string myData[6][13] = { 
    { "EN10-5-56" , "500", "700", "2000", "1850", "2000", "800", "750", "2300", "1900", "1600", "750", "700" }, 
    { "EN10-5-65" , "550", "1600", "1700", "780", "1980", "700", "750", "2300", "780", "800", "650", "550" }, 
    { "EN14-5-83" , "600", "700", "2000", "1850", "2000", " 600", "650", "700", "200", "800", "750", "700" }, 
    { "EN14-5-69" , "900", "600", "1950", "780", "800", "590", "620", "760", "1900", "1890", "2000", "700" }, 
    { "EN18-5-112", "550", "1670", "2000" , "680", "900", "1500", "1800", "2500", "779", "800", "650", "650" }, 
    { "EN18-5-118", "800", "1890", "2300", "1850", "2000", "800", "750", "1700", "560", "1300", "1500", "850" }, 
}; // row x column (class x time) 


// row x column 
for (int i = 0; i < 6; i++) // classrooms (row) 
{ 
    for (int j = 0; j < 13; j++) 
    { 
     if (myData[i] == classroom) // ERROR HERE 
     { 
      cout << myData[i] << endl; 
     } 
    } 
} 

エラーがある:

エラーC2679バイナリ「==」:なしオペレータはタイプの「STD :: string」を右側のオペランドをとる見つからない(または全く許容される変換はありません)、at(myData [i] ==教室)。

また、入力時間を使用して測定値を得るにはどうすればよいですか?何か案が??

+1

エラーとは何ですか? – Dai

+0

エラー\t C2679 \tバイナリ '==': 'std :: string'型の右オペランドを取る演算子が見つかりません(または受け入れ可能な変換はありません) – Daaenerys

+0

'myData'は' string'の配列ではありません。したがって、 'myData [i]'は 'string'ではありません。あなたの' if'ステートメントでそれを使用しようとしています。 'string'の配列の配列です。つまり、 'string'と' string'の 'array'を比較しています。 – lurker

答えて

0

myDataは2次元配列ですが、単一の次元指定子しか提供していません。

myData[i]array-of-stringで、stringのインスタンスは1つではありません。列にはiが使用されているため、行にはjも指定する必要があります。

if(myData[i][j] == classroom) { 
    cout << myData[i][j] << endl; 
} 
+0

ありがとう!その後、私はどのように読書を印刷するために、教室と一緒に、ユーザーの入力時間を使用するように頼むことができますか?手伝ってくれてありがとう! – Daaenerys

0

2次元マトリックス。要素にはmyData[i]としてアクセスできません。両方のインデックスを与える必要があります。 myData[i]myData[i][0]と置き換えてください。ここでは、それをclassroomと比較しています。 if条件の場合、myData[i]myData[i][j]に置き換えてください。

これで動作するはずです。

+0

ああ!私の配列は2つのインデックスが必要であることを忘れてしまいました。オッズ! – Daaenerys

0

myData1-dimensional arrayではなく、2-dimensional arrayです。

だから、あなたは、この方法を試してみて:

cout << "Please enter the classroom: "; 
string classroom; 
cin >> classroom; 
cout << "Please enter the time: "; 
string time; 
cin >> time; 
cout << endl; 

string myData[6][13] = { 
     { "EN10-5-56" , "500", "700", "2000", "1850", "2000", "800", "750", "2300", "1900", "1600", "750", "700" }, 
     { "EN10-5-65" , "550", "1600", "1700", "780", "1980", "700", "750", "2300", "780", "800", "650", "550" }, 
     { "EN14-5-83" , "600", "700", "2000", "1850", "2000", " 600", "650", "700", "200", "800", "750", "700" }, 
     { "EN14-5-69" , "900", "600", "1950", "780", "800", "590", "620", "760", "1900", "1890", "2000", "700" }, 
     { "EN18-5-112", "550", "1670", "2000" , "680", "900", "1500", "1800", "2500", "779", "800", "650", "650" }, 
     { "EN18-5-118", "800", "1890", "2300", "1850", "2000", "800", "750", "1700", "560", "1300", "1500", "850" }, 
}; // row x column (class x time) 


// row x column 
for (int i = 0; i < 6; i++) // classrooms (row) 
{ 
    for (int j = 0; j < 13; j++) 
    { 
     if (myData[i][j] == classroom) // NO ERROR HERE 
     { 
      cout << myData[i] << endl; 
     } 
    } 
} 
関連する問題