【问题标题】:Summing Selected Numbers in a Matrix对矩阵中的选定数字求和
【发布时间】:2021-12-18 21:57:11
【问题描述】:

我正在尝试用 for 循环对矩阵的一些元素求和。我成功地对矩阵的所有元素求和,但我无法对选定的元素求和。这是我的代码:

using System;

namespace debugginglab
{
    class Program
    {
        static void Main(string[] args)
        {
            int[,] matrix = { { 5, 4, 3, 2, 1 }, 
                              { 1, 3, 4, 6, 5 }, 
                              { 6, 3, 2, 1, 0 }, 
                              { 2, 5, 7, 11,20,}, 
                              { 13,17,19,23,25} };
            int sum = summing(matrix);
            Console.WriteLine(toplam);
            Console.ReadKey();
        }
        static int summing(int[,] m)
        {
            int sum = 0;
            for (int i = 0; i < m.GetLength(0); ++i)
                for (int j = 0; j < m.GetLength(1); ++j)
                    toplam += m[i, j];
            return sum;
            
            Console.ReadKey();
        }
     
    }
}

现在我的问题:例如,我想从第二列中选择 3、3、5 和它们找到 11 的结果。如何使用 for 循环 挑选和总结它们?谢谢。

【问题讨论】:

  • toplam 是什么?看来你应该这样做sum += m[i, j];
  • 如果您选择值 3,3,5,则对选择进行求和。但要编写此代码,您需要知道为什么,而不是值。也就是说,您需要描述用于进行选择的标准。然后,您可以将该标准转换为代码。当我说“标准”时,我指的不仅仅是(1,1), (1,2), (1,3)。我的意思是:为什么是这些职位,而不是不同的职位?这是哪里来的?

标签: c# for-loop matrix data-structures


【解决方案1】:

这里您有一个基本版本的程序,它使用for 循环对给定矩阵的选定部分求和。
请注意,它不会为您提供任何类型的溢出/类型/等安全性 - 这取决于您。

using System;       

public class Program
{
    public static void Main(string[] args)
    {
        int[,] matrix = { { 5, 4, 3, 2, 1 }, 
                         { 1, 3, 4, 6, 5 }, 
                         { 6, 3, 2, 1, 0 }, 
                         { 2, 5, 7, 11,20,}, 
                         { 13,17,19,23,25} };

        Console.WriteLine("Start column (from 0)");
        var fromColumn = Int32.Parse(Console.ReadLine());
        Console.WriteLine("End column (from 0)");
        var toColumn = Int32.Parse(Console.ReadLine());
        Console.WriteLine("Start row (from 0)");
        var fromRow = Int32.Parse(Console.ReadLine());
        Console.WriteLine("end row (from 0)");
        var toRow = Int32.Parse(Console.ReadLine());

        int sum = summing(matrix, fromColumn, toColumn, fromRow, toRow);
        Console.WriteLine("Sum is: " + sum);
        Console.ReadLine();
    }
    
    static int summing(int[,] m, int fromColumn, int toColumn, int fromRow, int toRow)
    {
        int sum = 0;
        for(int i = fromRow; i <= toRow; i++)
        {
            for(int j = fromColumn; j <= toColumn; j++)
            {
                sum+= m[i,j];
            }
        }
        return sum;
    }
}

例如您的帖子中提到的(3,3,1的总和),您需要输入start col为1,end col为1,start row为1,end row为3。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多