Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将矩阵乘以用户输入_C#_Multidimensional Array_Visual Studio 2015_User Input - Fatal编程技术网

C# 将矩阵乘以用户输入

C# 将矩阵乘以用户输入,c#,multidimensional-array,visual-studio-2015,user-input,C#,Multidimensional Array,Visual Studio 2015,User Input,这是一个代码示例,它将一个矩阵乘以多个用户输入。该操作应按用户输入的数量重复。例如,如果我放一个数字3,我得到3个相同的打印矩阵。相反,我希望矩阵与数字3相乘3次(每个新矩阵都与数字3相乘)。有人知道我怎么做吗?多谢各位 *using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace user_input {

这是一个代码示例,它将一个矩阵乘以多个用户输入。该操作应按用户输入的数量重复。例如,如果我放一个数字3,我得到3个相同的打印矩阵。相反,我希望矩阵与数字3相乘3次(每个新矩阵都与数字3相乘)。有人知道我怎么做吗?多谢各位

*using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace user_input
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] nodes = { "1", "2", "3", "4", "5", "6" };
            int[,] adjmatrix = new int[,]
                    {{2,7,3,8,4},
                     {7,0,8,2,6},
                     {6,8,4,9,7},
                     {8,5,9,8,8},
                     {4,9,7,8,1}
                    };
            int[,] newmatrix = new int[adjmatrix.GetLength(0), adjmatrix.GetLength(1)];
            Printmatrix(adjmatrix, nodes, nodes, "Input Matrix");
            Newline();
            int n = 0;
            System.Console.WriteLine("Please enter a number");
            n = Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i < n; i++)
            {
                MultipliedMatrix(ref newmatrix, adjmatrix, n);
                Newline();
                Printmatrix(newmatrix, nodes, nodes, "Multiplied Matrix");
            }


            Console.ReadKey();
        }
        private static void Newline()
        {
            Console.Write("\n");
        }
        private static void MultipliedMatrix(ref int[,] newmatrix, int[,] adjmatrix, int n)
        {
            for (int i = 0; i < adjmatrix.GetLength(0); i++)
            {
                for (int j = 0; j < adjmatrix.GetLength(1); j++)
                {
                    newmatrix[i, j] = adjmatrix[i, j] * n;
                }
            }
        }

        private static void Printmatrix(int[,] adjmatrix, string[] nodes_h, string[] nodes_v, string title)
        {
            if (adjmatrix.GetLength(0) != 0)
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("{0}\n", title);
                Console.ForegroundColor = ConsoleColor.DarkGreen;
                Console.Write("\t");
                for (int i = 0; i < adjmatrix.GetLength(0); i++)
                    Console.Write("{0}\t", nodes_v[i]);
                for (int i = 0; i < adjmatrix.GetLength(0); i++)
                {
                    Newline();
                    Console.ForegroundColor = ConsoleColor.DarkGreen;
                    Console.Write("{0}\t", nodes_h[i]);
                    for (int j = 0; j < adjmatrix.GetLength(1); j++)
                    {
                        Console.ForegroundColor = ConsoleColor.DarkGray;
                        if (adjmatrix[i, j] < 500) Console.Write("{0}\t", adjmatrix[i, j]);
                        else
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.Write("-\t", adjmatrix[i, j]);
                        }
                    }
                    Console.ForegroundColor = ConsoleColor.White;
                }
                Newline();
            }
        }
    }
}*
*使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间用户输入
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串[]节点={“1”、“2”、“3”、“4”、“5”、“6”};
int[,]调整矩阵=新int[,]
{{2,7,3,8,4},
{7,0,8,2,6},
{6,8,4,9,7},
{8,5,9,8,8},
{4,9,7,8,1}
};
int[,]newmatrix=newint[adjmatrix.GetLength(0),adjmatrix.GetLength(1)];
打印矩阵(adjmatrix,节点,节点,“输入矩阵”);
换行符();
int n=0;
System.Console.WriteLine(“请输入一个数字”);
n=Convert.ToInt32(Console.ReadLine());
对于(int i=0;i

*

您一直将相同的矩阵作为输入传递给
multipledMatrix()
,因此它一直在做相同的事情

要使其在新矩阵上运行,请在循环中调用
Printmatrix()
后立即添加以下行:

adjmatrix = newmatrix;
或者(在IMO中更好的做法是)更改
multipledMatrix()
以返回新矩阵,如下所示:

private static int[,] MultipliedMatrix(int[,] adjmatrix, int n)
{
    int[,] newmatrix = new int[adjmatrix.GetLength(0), adjmatrix.GetLength(1)];

    for (int i = 0; i < adjmatrix.GetLength(0); i++)
        for (int j = 0; j < adjmatrix.GetLength(1); j++)
            newmatrix[i, j] = adjmatrix[i, j] * n;

    return newmatrix;
}

您一直将相同的矩阵作为输入传递给
MultipleedMatrix()
,因此它一直在做相同的事情

要使其在新矩阵上运行,请在循环中调用
Printmatrix()
后立即添加以下行:

adjmatrix = newmatrix;
或者(在IMO中更好的做法是)更改
multipledMatrix()
以返回新矩阵,如下所示:

private static int[,] MultipliedMatrix(int[,] adjmatrix, int n)
{
    int[,] newmatrix = new int[adjmatrix.GetLength(0), adjmatrix.GetLength(1)];

    for (int i = 0; i < adjmatrix.GetLength(0); i++)
        for (int j = 0; j < adjmatrix.GetLength(1); j++)
            newmatrix[i, j] = adjmatrix[i, j] * n;

    return newmatrix;
}

首先,我将把multiply改为函数,而不是void方法调用,这样看起来更好

这将是伪代码:

n = userinput;
i=0;
int[,] result;

do
  i+=1;
  result = MultiplyMatrix(result, n);
while i<n


int[,] MultiplyMatrix(adjmatrix, n){
   (multiply)  
   return resultMatrix }; 
n=用户输入;
i=0;
int[,]结果;
做
i+=1;
结果=多矩阵(结果,n);

当我开始时,我会将乘法改为函数,而不是void方法调用,这样看起来更好

这将是伪代码:

n = userinput;
i=0;
int[,] result;

do
  i+=1;
  result = MultiplyMatrix(result, n);
while i<n


int[,] MultiplyMatrix(adjmatrix, n){
   (multiply)  
   return resultMatrix }; 
n=用户输入;
i=0;
int[,]结果;
做
i+=1;
结果=多矩阵(结果,n);
而我