首页 > 解决方案 > 3D数组中每边的平均数

问题描述

我是编程新手,我想知道是否有任何简单的方法可以从每一方计算平均总和。

这是我的代码,如果有人知道如何提供帮助,那就太好了。

using System;

namespace _3D_Arrays
{
    class Program
    {
        static void Main(string[] args)
        {
            int[,,] array3D = new int[1, 4, 3] { { { 4, 5, 6 }, { 4, 4, 5 }, 
                                                   { 3, 6, 4 }, { 5, 4, 5 } } };
            Console.WriteLine();

            for (int i = 0; i < 1; i++)
            {
                for (int j = 0; j<4; j++)
                {
                    for (int k = 0; k < 3; k++)
                    {
                        Console.WriteLine("a[{0},{1},{2}] : {3}", i, j, k, array3D[i,j,k]);
                    }
                }
            }       
        }
    }
}
Outcome: 
a[0,0,0] : 4
a[0,0,1] : 5
a[0,0,2] : 6
avrg : 5 ///(4+5+6 : 3)
a[0,1,0] : 4
a[0,1,1] : 5
a[0,1,2] : 3
avrg : 4 ///(4+5+3 : 3)
...

标签: c#

解决方案


使用列表来跟踪您身边的所有值。在你的 K 循环之后取平均值。

using System.Linq; // on top
using System.Collections.Generic;

...
for (int i = 0; i < 1; i++)
{
    for (int j = 0; j < 4; j++)
    {
        List<int> arr = new List<int>();
        for (int k = 0; k < 3; k++)
        {
            Console.WriteLine("a[{0},{1},{2}] : {3}", i, j, k, array3D[i, j, k]);
            arr.Add(array3D[i, j, k]);
        }
        Console.WriteLine($"Average of side: [{i}, {j}] = {(int)arr.Average()}");
    }
}

你得到的输出是:

a[0,0,0] : 4
a[0,0,1] : 5
a[0,0,2] : 6
Average of side: [0, 0] = 5
a[0,1,0] : 4
a[0,1,1] : 4
a[0,1,2] : 5
Average of side: [0, 1] = 4
a[0,2,0] : 3
a[0,2,1] : 6
a[0,2,2] : 4
Average of side: [0, 2] = 4
a[0,3,0] : 5
a[0,3,1] : 4
a[0,3,2] : 5
Average of side: [0, 3] = 4

推荐阅读