- ベストアンサー
配列を使った入力
- 配列を使った入力のプログラムでエラーが発生しています。
- `test[b][a] = c;`の部分が問題の原因です。
- 配列の使い方が間違っている可能性があります。エラーの理由を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
C++では > int test[b][a]; のように、添字に変数を使っての配列宣言はできません。 あと、配列の大きさが入っている変数は、sub、 numですよね? 動的に配列を確保するには、new演算子を使用します。 2次元配列の場合、1度に int **test=new int[sub][num] ; とすることはできず、第1の添字用の領域を int **test=new int*[sub] ; で確保して、 for( b=0;b<sub;++b) { test[b]= new int[num] ; } と各test[b]に対して確保します。 使い終わったら、delete[]で解放します。その際は、確保とは逆の順番で行います。 for( b=0;b<sub;++b) { detele[] int[num] ; } delete[] test あるいは、std::vector等、配列に相当するクラスを使用します。 ちなみに、そのエラーはここではなく、 > cin << c; でcinに対して << を使っているためのものです。 std::istream型への参照 << int型への参照 という演算に該当するものが無い、とちゃんとエラーメッセージに書いてあります。
その他の回答 (1)
- azkurw
- ベストアンサー率33% (41/124)
>test[b][a] = c; という部分が悪いと思うのですが 一つ上の行(Line:17)の 「<<」 の向きが逆では? あと、2次元配列のtestの宣言について。(Line:13) a,bを使っていますが、それ以前に、a,bが初期化されていませんよ。 要素数が不確定だから動かないと思う。
お礼
ご回答頂き、誠にありがとうございます。 おっしゃるとおり、<< の向きが逆でした。 また、testの宣言でa,bでなくsubとnumを使ったら無事うまく動きました。
お礼
親切にご回答頂き、誠にありがとうございます。 下記質問者の方の回答のお礼にあるように、無事動きました。 new演算子というものを使わなくても動いたのですが、 新しい知恵を授けていただきありがとうございます。