これは答えをC
に保存する行列積であり、C=A*B
です。では、C
の値はなぜ変更されませんか?このC#コードが失敗するのはなぜですか?
並列プログラミングでこのメソッドを使用して、各列が単一のスレッドで評価されるようにするため、各列を計算する特別な方法を使用します。私はこれまでにパスカルでこのようなことをテストしましたが、C#ではあらゆることが間違っています。
注:これは宿題用であり、このコードにはまだ並行していません。
class Program
{
private static int n = 2;
static int[,] A = new int[n, n];
static int[,] B = new int[n, n];
static int[,] C = new int[n, n];
private static void Main(string[] args)
{
A[0, 0] = 2; A[0, 1] = 3;
A[1, 0] = 5; A[1, 1] = 1;
B[0, 0] = 3; B[0, 1] = 0;
B[1, 0] = 1; B[1, 1] = 0;
C[0, 0] = 0; C[0, 1] = 0;
C[1, 0] = 0; C[1, 1] = 0;
//Calculation
for (int z = 0; z < n; z++)
{
ComputeColumn(z);
}
PrintAnswer(C);
Console.ReadKey();
}
private static void ComputeColumn(int n)
{
for (int i = 0; i < n; i++)
{
for (int k = 0; k < n; k++)
{
C[i, n] += (A[i, k] * B[k, n]);
}
}
}
private static void PrintAnswer(int[,] what)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(what[i, j] + " ");
}
Console.WriteLine();
}
}
}
デバッガを使用して問題を簡単に診断できます。 – Msonic
あなたの鼻の医師に相談してください! – sap
ここでヒント - Cのどのセルに変更が見込まれますか? –