2 个多维数组的总和
Sum of 2 Multidimensional Arrays
我能够在一个多维数组中对 2 个值求和并使用控制台打印 Application.That 下面的代码打印每个多维数组的 2 个总和。但我需要的是,打印 2 个多维的总和 arrays.I 已经清理了代码,使其不那么复杂。
int[,] a = new int[2, 2];
int[,] b = new int[2, 2];
int[,] c = new int[2, 2];
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 1; j++)
{
Console.Write("Please enter {0}. Mark of First lesson", i + 1, j + 1);
a[i, j] = Int32.Parse(Console.ReadLine());
}
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 1; j++)
{
Console.Write("Please enter {0}. Mark of Second lesson", i + 1, j + 1);
b[i, j] = Int32.Parse(Console.ReadLine());
}
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 1; j++)
{
c[i, j] = a[i, j] + b[i, j];
Console.WriteLine("{0}."+c[i, j],i+1+"The sum of 2 marks is:",j+1);
}
}
Console.ReadKey();
将 for 循环更改为此
int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
int[,] b = new int[2, 3] { { 1, 2, 3 }, { 1, 2, 3 } } ;
int[] c = { 0, 0 };
int[] d = { 0, 0 };
int k = 0;
int l = 0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
c[k] =c[k]+ a[i,j];
}
k++;
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
d[l] = d[l]+ b[i, j];
}
l++;
}
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < c.Length; i++)
sum1 += c[i];
for (int i = 0; i < d.Length; i++)
sum2 += d[i];
int totalSum = sum1 + sum2;
Console.WriteLine(totalSum);
希望对您有所帮助
问题出在这一行:
for (int j = 0; j < 1; j++)
这将 运行 恰好一次,因为 0 + 1 = 1 且 1 不小于 1。换句话说,它实际上不会对数组中的第二行执行任何操作。改成
for (int j = 0; j <= 1; j++)
它会起作用(请参阅下面的更多详细信息)。
另一件需要考虑的事情:您可能需要明确说明该操作应该如何工作。在这种情况下, "sum" 实际上是非常模糊的。例如:
Array 1 Array 2
2 3
4 6
结果应该是
Array 3
5
10
(即它像矢量加法一样工作)还是应该是 15
? (修改你的代码使其像第二个代码一样工作很容易;在那种情况下,你根本不会使用内部 for
循环,只是一个计数器存储你要添加的行)。
第三种可能性(我严重怀疑这是你想要的)但你可能正在尝试这样的事情:
Array 1 Sum Array 2 Sum
6 9
下面是一个可能有用的代码示例:
private static void AddTwoArrays()
{
int size;
Console.WriteLine("Enter a size:");
while (!int.TryParse(Console.ReadLine(), out size))
{
Console.WriteLine("Enter a valid int");
}
int[][] array1 = new int[size][];
int[][] array2 = new int[size][];
int sum = 0;
int[] rowSum = new int[size];
Random random = new Random();
for (int i = 0; i < size; i++)
{
array1[i] = new int[size];
array2[i] = new int[size];
for (int j = 0; j < size; j++)
{
array1[i][j] = random.Next(0, 5);
array2[i][j] = random.Next(0, 5);
// This is if you want to get the sum of every number contained in the array
sum += array1[i][j];
sum += array2[i][j];
// This'll give row-by-row
rowSum[j] += array1[i][j];
rowSum[j] += array2[i][j];
}
}
Console.WriteLine("Sum: " + sum.ToString());
}
它的工作方式与您的不完全相同,但它仍然可以作为一个有用的示例。
你不需要为此做额外的计算。真的很简单。
你可以取两个变量来告诉你每个矩阵的总和,最后你可以将它们相加。或者如果你只想要两个矩阵的总和,那么你可以只通过一个变量得到它。
因此,当您填充矩阵时,只需将相应的总和增加该值即可。
public static void Main()
{
int[,] a = new int[2, 2];
int[,] b = new int[2, 2];
int[,] c = new int[2, 2];
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
Console.Write("Please enter {0}. Mark of First lesson", i + 1, j + 1);
a[i, j] = Int32.Parse(Console.ReadLine());
sum1 += a[i,j];
}
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
Console.Write("Please enter {0}. Mark of Second lesson", i + 1, j + 1);
b[i, j] = Int32.Parse(Console.ReadLine());
sum2 += b[i, j];
}
}
Console.WriteLine("Sum: " + (sum1 + sum2));
//for (int i = 0; i < 2; i++)
//{
// for (int j = 0; j < 2; j++)
// {
// c[i, j] = a[i, j] + b[i, j];
// Console.WriteLine("{0}." + c[i, j], i + 1 + "The sum of 2 marks is:", j + 1);
// }
//}
Console.Read();
}
我能够在一个多维数组中对 2 个值求和并使用控制台打印 Application.That 下面的代码打印每个多维数组的 2 个总和。但我需要的是,打印 2 个多维的总和 arrays.I 已经清理了代码,使其不那么复杂。
int[,] a = new int[2, 2];
int[,] b = new int[2, 2];
int[,] c = new int[2, 2];
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 1; j++)
{
Console.Write("Please enter {0}. Mark of First lesson", i + 1, j + 1);
a[i, j] = Int32.Parse(Console.ReadLine());
}
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 1; j++)
{
Console.Write("Please enter {0}. Mark of Second lesson", i + 1, j + 1);
b[i, j] = Int32.Parse(Console.ReadLine());
}
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 1; j++)
{
c[i, j] = a[i, j] + b[i, j];
Console.WriteLine("{0}."+c[i, j],i+1+"The sum of 2 marks is:",j+1);
}
}
Console.ReadKey();
将 for 循环更改为此
int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
int[,] b = new int[2, 3] { { 1, 2, 3 }, { 1, 2, 3 } } ;
int[] c = { 0, 0 };
int[] d = { 0, 0 };
int k = 0;
int l = 0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
c[k] =c[k]+ a[i,j];
}
k++;
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
d[l] = d[l]+ b[i, j];
}
l++;
}
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < c.Length; i++)
sum1 += c[i];
for (int i = 0; i < d.Length; i++)
sum2 += d[i];
int totalSum = sum1 + sum2;
Console.WriteLine(totalSum);
希望对您有所帮助
问题出在这一行:
for (int j = 0; j < 1; j++)
这将 运行 恰好一次,因为 0 + 1 = 1 且 1 不小于 1。换句话说,它实际上不会对数组中的第二行执行任何操作。改成
for (int j = 0; j <= 1; j++)
它会起作用(请参阅下面的更多详细信息)。
另一件需要考虑的事情:您可能需要明确说明该操作应该如何工作。在这种情况下, "sum" 实际上是非常模糊的。例如:
Array 1 Array 2
2 3
4 6
结果应该是
Array 3
5
10
(即它像矢量加法一样工作)还是应该是 15
? (修改你的代码使其像第二个代码一样工作很容易;在那种情况下,你根本不会使用内部 for
循环,只是一个计数器存储你要添加的行)。
第三种可能性(我严重怀疑这是你想要的)但你可能正在尝试这样的事情:
Array 1 Sum Array 2 Sum
6 9
下面是一个可能有用的代码示例:
private static void AddTwoArrays()
{
int size;
Console.WriteLine("Enter a size:");
while (!int.TryParse(Console.ReadLine(), out size))
{
Console.WriteLine("Enter a valid int");
}
int[][] array1 = new int[size][];
int[][] array2 = new int[size][];
int sum = 0;
int[] rowSum = new int[size];
Random random = new Random();
for (int i = 0; i < size; i++)
{
array1[i] = new int[size];
array2[i] = new int[size];
for (int j = 0; j < size; j++)
{
array1[i][j] = random.Next(0, 5);
array2[i][j] = random.Next(0, 5);
// This is if you want to get the sum of every number contained in the array
sum += array1[i][j];
sum += array2[i][j];
// This'll give row-by-row
rowSum[j] += array1[i][j];
rowSum[j] += array2[i][j];
}
}
Console.WriteLine("Sum: " + sum.ToString());
}
它的工作方式与您的不完全相同,但它仍然可以作为一个有用的示例。
你不需要为此做额外的计算。真的很简单。
你可以取两个变量来告诉你每个矩阵的总和,最后你可以将它们相加。或者如果你只想要两个矩阵的总和,那么你可以只通过一个变量得到它。
因此,当您填充矩阵时,只需将相应的总和增加该值即可。
public static void Main()
{
int[,] a = new int[2, 2];
int[,] b = new int[2, 2];
int[,] c = new int[2, 2];
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
Console.Write("Please enter {0}. Mark of First lesson", i + 1, j + 1);
a[i, j] = Int32.Parse(Console.ReadLine());
sum1 += a[i,j];
}
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
Console.Write("Please enter {0}. Mark of Second lesson", i + 1, j + 1);
b[i, j] = Int32.Parse(Console.ReadLine());
sum2 += b[i, j];
}
}
Console.WriteLine("Sum: " + (sum1 + sum2));
//for (int i = 0; i < 2; i++)
//{
// for (int j = 0; j < 2; j++)
// {
// c[i, j] = a[i, j] + b[i, j];
// Console.WriteLine("{0}." + c[i, j], i + 1 + "The sum of 2 marks is:", j + 1);
// }
//}
Console.Read();
}