2012-03-17 33 views
0

この質問に関するガイダンスを教えてもらえますか:ブール値の2つの正方行列の積を計算するプログラムを作成し、+とANDの代わりにOR演算を使用します*の代わりに操作。ブール値の2つの正方行列の積を計算する

あなたが次の2つの行列A:3x3、B:3x3、C1,1が(A1,1 * B1,1)、(A2,1 * B1,2)、(A3,1 * B1,3)。私が得られないことは、ANDとORオペランドだけでこれを行う方法です。

ああ、私のためにプログラム全体を書いてはいけません...私は自分でこれを行う必要があります、私は学ばないでしょう。 :)

+0

質問には、「+」を「OR」と「*」を「AND」で置き換えてください。 –

+0

私は知っていますが、ANDとORと一緒に値を追加するにはどうすればいいですか – user1213994

+0

質問は**文字通り**置き換えます... –

答えて

0

だけ&&によって||*+を置き換える:

(A1,1 & & B1,1)を|| (A2,1 & & B1,2)|| & &と||それぞれAND演算子またはOR演算子です。

+0

ANDとORはループ内の条件に使用され、+と*は加算し、 。 +と*を使用せずに追加と掛け算を行う方法はありますか? – user1213994

+0

@ user1213994 ANDとORは、合計と積の演算子として表示されます。 **試してみてください** – jmad

+0

あなたは私に例を挙げてくれますか?私はそれを働かせることができません... – user1213994

0

そのブール式では、ブール値は0と1(0 usually = false and 1 usually = true)しかないので、値を正確に追加したり掛けたりしないようにします。だから、上記のように+をorとandを*と置き換えてandを使ってブール値を取得します。

0

このコードは、2行2列のブール値行列で動作すると思います。より高い正方行列について言うことはできません。

import java.util.Scanner; 
    public class Boolean Matrix Multiplication { 
     public static void main(String[] args){ 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter the first number : "); 
     int n = scan.nextInt(); 

     boolean[][] b= { 
         {true, false}, 
         {false, true} 
         }; 
     boolean[][] a= { 
         {false, true}, 
         {true, false} 
         }; 
     boolean[][] c = new boolean [n][n]; 

     for(int i = 0; i<n; i++){ 
      for(int j = 0; j<n; j++){ 
       for(int k = 0; k<n; k++){ 
        c[i][j] = (a[i][k] && b[k][j]) ||(a[i][n-k-1] && b[n-k-1][j]); 
       } 
        System.out.print(c[i][j] + " "); 
      } 
       System.out.println(); 
     } 

    } 
} 
関連する問題