2017-09-03 5 views
-1

私はC++のちょっとした話で、クラスについて学ぶだけです。私は、3x3行列の加算、減算、行列式の発見を可能にするクラスを使用するプログラムを作成しています。私の問題は、これをコンパイルするたびに、「最初の配列...と2番目の配列のデータを入力してください」という質問が2回あります。私はこれを解決する方法がわかりません。また、誰かがこれの決定的な部分と逆の部分についてのヒントを持っていたのかどうか疑問に思っていました!

これは私がこれまで持っているものです。C++行列のタスクを実行するクラス

#include<iostream> 
using namespace std; 

Matrixクラス:

class matrix { 


    int a[3][3], b[3][3]; 
    int add[3][3], sub[3][3]; 

    public: 
     matrix() 
     { 
      cout << "Enter data for first array:" << endl; 
      for(int i = 0; i < 3; i++) 
       for(int j = 0; j < 3; j++) 
        cin >> a[i][j]; 
      cout << "Enter data for second array:" << endl; 
       for(int i = 0; i < 3; i++) 
        for(int j = 0; j < 3; j++) 
         cin >> b[i][j]; 
     } 

     void addition() 
     { 
      cout << "After matrix addition" << endl; 
      for(int i = 0; i < 3; i++) 
      { 
       for (int j = 0; j < 3; j++) 
       { 
        add[i][j]= a[i][j] + b[i][j]; 
        cout << add[i][j] << "\t"; 
       } 
       cout << endl; 
      } 
     } 
     void subtraction() 
     { 
      cout << "After matrix subtraction" << endl; 
      for(int i = 0; i < 3; i++) 
      { 
       for(int j = 0; j < 3; j++) 
       { 
        sub[i][j] = a[i][j] - b[i][j]; 
        cout << sub[i][j] << "\t"; 
       } 
       cout << endl; 
      } 
     } 

}; 

メイン:

int main() { 
    cout << "Calculations of matrix:" << endl; 
    matrix mtAdd = matrix(); 
    matrix mtSub = matrix(); 
    mtAdd.addition(); 
    mtSub.subtraction(); 
    return 0; 
} 
+1

ちょうどヒントは、どこにでも置くのではなく、テーブルサイズ '3'に対して' enum'または 'static const'を使うべきでしょう。 –

+0

私は、すでに3x3の行列実装を持っているライブラリを使用する(または研究する)ことをお勧めします。私はこのためにEigen3を強く勧めます。 –

+0

2つの行列オブジェクトを作成していますが、それぞれに4つの配列a、b、add、subが含まれています...どのコードを行列クラスに含めるべきか、たとえば、各マトリックスクラスに含まれる配列の数はいくつですか? –

答えて

0

あなたがmatrix()メソッドを呼び出しているである理由mtAddとmtSubの場合は2回、main()mの宣言の場合は民法。

int main() { 
cout << "Calculations of matrix:" << endl; 
matrix mtAdd = matrix(); 
matrix mtSub = matrix(); 
mtAdd.addition(); 
mtSub.subtraction(); 
return 0; 

}

倍(あなたがしたいかのように何回も)一度それを呼び出すと、変数を使用するようにしてください。別の方法を試してみてください。この

int main() { 
cout << "Calculations of matrix:" << endl; 
matrix mtVar = matrix(); 
mtVar.addition(); 
mtVar.subtraction(); 
return 0; 

}

のようなものあなたは一度だけプロンプトが表示されなければなりません。

+0

行列メソッドを一度呼び出さずに変数を複数回呼び出すにはどうすればよいですか? – Drea

+0

今編集したように、変数の宣言が1つしかありません。答えを確認してください。 –

関連する問題