2017-10-23 9 views
0

行列aの最初の行の総数を数えて行列bに入れるにはどうすればいいですか?cを使って行列行の総数を数える方法

例:

マトリックス:3 2 1

等行列Bの出力は次のようになります。あなたが作るために必要3 + 6 2 + 6 1 + 6

 Console.Write("Matriks A\n"); 
     Console.WriteLine("------------"); 
     Console.WriteLine(); 

     for (a = 0; a < baris; a++) 
     { 
      for (b = 0; b < kolom; b++) 
      { 
       Console.Write(" Matriks A [" + (a + 0) + "][" + (b + 0) + "] = "); 
       matrik_a[a, b] = int.Parse(Console.ReadLine()); 
      } 
     } 

     Console.WriteLine(); 
     Console.WriteLine("Matriks B "); 
     Console.WriteLine("----------------------------------"); 

     for (a = 0; a < baris; a++) 
     { 
      for (b = 0; b < kolom; b++) 
      { 

       matrik_b[a, b] = matrik_a[a, b] + matrik_b[a, b]; 
       Console.Write("{0:d}\t", matrik_b[a, b]); 


      } 
      Console.WriteLine(); 
     } 
     Console.ReadLine(); 
    } 
    } 
} 
+0

問題は何ですか? – STF

+0

あなたの正確な問題は何ですか? –

答えて

0

ループを各行に適用し、合計をvarに保存し、もう一方の行列に入れます。これをすべて1回の繰り返しで行います。

複雑さは2以来同じまま*はO(n)= O(n)の

static void Main(string[] args) 
    { 
     int baris = 2, kolom = 2, a=0, b=0; 
     Console.Write("Matriks A\n"); 
     Console.WriteLine("------------"); 
     Console.WriteLine(); 
     int[,] matrik_a = new int[3, 3]; 
     int[,] matrik_b = new int[3, 3]; 

     for (a = 0; a <= baris; a++) 
     { 
      for (b = 0; b <= kolom; b++) 
      { 
       Console.Write(" Matriks A [" + (a + 0) + "][" + (b + 0) + "] = "); 
       matrik_a[a, b] = int.Parse(Console.ReadLine()); 
      } 
     } 

     Console.WriteLine(); 
     Console.WriteLine("Matriks B "); 
     Console.WriteLine("----------------------------------"); 

     int sumOfRow = 0; 
     for (a = 0; a <= baris; a++) 
     { 
      for (b = 0; b <= kolom; b++) 
      { 
       sumOfRow += matrik_a[a, b]; 
      } 
      Console.WriteLine("sum of row " + a.ToString() + "is: " + sumOfRow.ToString()); 
      for (b = 0; b <= kolom; b++) 
      { 
       matrik_b[a, b] = matrik_a[a, b] + sumOfRow; 
      } 
      sumOfRow = 0; 
     } 

     for (a = 0; a <= baris; a++) 
     { 
      for (b = 0; b <= kolom; b++) 
      { 
       Console.Write(matrik_b[a, b]); 
      } 

     } 
     Console.ReadLine(); 
    } 
0

私がすべきこれが最も効率的なソリューションであるかどうかわからないのですが、以下に、ループの2番目の部分を変更します仕事:

for (a = 0; a < baris; a++) 
{ 
    int rowSum = 0; //Below loop can be avoided using LINQ 
    for (b = 0; b < kolom; b++) 
    { 
     rowSum += matrik_a[a, b]; 
    } 
    for (b = 0; b < kolom; b++) 
    { 
     matrik_b[a, b] = matrik_a[a, b] + rowSum; 
     Console.Write("{0:d}\t", matrik_b[a, b]); 
    } 
} 
関連する問題