V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jayvs5200
V2EX  ›  C#

求教各位前辈关于多维数组求平均值。

  •  
  •   jayvs5200 · 2022-10-06 14:34:41 +08:00 · 1335 次点击
    这是一个创建于 539 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟编程新手,想跟各位前辈请教关于多维数组求平均值的问题。

    ####我的思路

    • 使用 for 取的数组内的数值
    • 将取得的数值相加为 sum
    • 使用 sum 除以数组内的位数得出平均值

    ####问题 求得的平均值不正确

    错误示范如下; Imgur

    希望能得到各位前辈指导,已经尝试在 google 寻找答案,但是没找到解(关键词用错了吗?); 麻烦各位前辈!

    8 条回复    2022-10-09 22:54:15 +08:00
    jayvs5200
        1
    jayvs5200  
    OP
       2022-10-06 14:38:03 +08:00
    ``
    int[,] x = new int[4, 5]
    {
    { 4, 5, 6, 2, 12 },
    { 10, 25, 33, 22, 11 },
    { 21, 32, 43, 54, 65 },
    { 3, 2, 1, 5, 6 }
    };
    ``

    C# 多维数组
    stonedongdong
        2
    stonedongdong  
       2022-10-06 14:45:43 +08:00   ❤️ 1
    内层循环的 sum 是不是少了一步重置为 0
    jayvs5200
        3
    jayvs5200  
    OP
       2022-10-06 16:36:24 +08:00
    @stonedongdong 谢谢指点。感谢前辈!我太粗心了。
    winglight2016
        4
    winglight2016  
       2022-10-06 18:19:52 +08:00
    虽然没用过 c#,但是如果是 python ,可以先 flatten ,再 sum/count ,尽量避免循环
    loverorser
        5
    loverorser  
       2022-10-06 18:35:57 +08:00 via Android
    考虑 linq
    jayvs5200
        6
    jayvs5200  
    OP
       2022-10-06 22:11:28 +08:00 via iPhone
    @loverorser @winglight2016 🙏谢谢两位。 经过一楼指点,已经处理好了
    hez2010
        7
    hez2010  
       2022-10-08 14:27:03 +08:00
    建议直接用 foreach ,因为多维数组不一定是二维的,还可能是三维或以上的。用 foreach 的话可以自动遍历所有的成员。

    var count = 0;
    var sum = 0;
    foreach (var i in x)
    {
    count++;
    sum += i;
    }
    Console.WriteLine((double)sum / count);
    jayvs5200
        8
    jayvs5200  
    OP
       2022-10-09 22:54:15 +08:00 via iPhone
    @hez2010 感謝🙏,我這就去驗證
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3207 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:34 · PVG 19:34 · LAX 04:34 · JFK 07:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.