示例#1
0
 public override ContextHandler Handle(ContextHandler request)
 {
     if (!request.Errors)
     {
         for (int currentRow = request.AugmentedMatrix.NumberOfRows - 1; currentRow >= 0; currentRow--)
         {
             double temp = request.AugmentedMatrix.Array[currentRow, request.AugmentedMatrix.NumberOfColums];
             for (int nextRow = currentRow + 1; nextRow < request.AugmentedMatrix.NumberOfRows; nextRow++)
             {
                 temp -= request.AugmentedMatrix.Array[currentRow, nextRow] * request.AugmentedMatrix.Array[nextRow, request.AugmentedMatrix.NumberOfColums + 1];
             }
             request.AugmentedMatrix.Array[currentRow, request.AugmentedMatrix.NumberOfColums + 1] = temp / request.AugmentedMatrix.Array[currentRow, currentRow];
         }
     }
     return(base.Handle(request));
 }
示例#2
0
        public override ContextHandler Handle(ContextHandler request)
        {
            if (!request.Errors)
            {
                request.Result += Environment.NewLine;
                request.Result += Environment.NewLine;
                request.Result += "RESULT";
                for (int currentRow = 0; currentRow < request.AugmentedMatrix.NumberOfRows; currentRow++)
                {
                    request.Result += Environment.NewLine + "x" + (currentRow + 1) + " = " +
                                      request.AugmentedMatrix.Array[currentRow, request.AugmentedMatrix.NumberOfColums + 1].ToString();
                }
            }

            Console.WriteLine(request.Result);
            return(base.Handle(request));
        }
示例#3
0
        public override ContextHandler Handle(ContextHandler request)
        {
            for (int currentRow = 0; currentRow < request.AugmentedMatrix.NumberOfRows - 1; currentRow++)
            {
                if (Math.Abs(request.AugmentedMatrix.Array[currentRow, currentRow]) <= 0)
                {
                    for (int nextRow = currentRow + 1; nextRow < request.AugmentedMatrix.NumberOfRows; nextRow++)
                    {
                        if (Math.Abs(request.AugmentedMatrix.Array[nextRow, currentRow]) > 0)
                        {
                            for (int curentColumn = 0; curentColumn <= request.AugmentedMatrix.NumberOfColums; curentColumn++)
                            {
                                var temp = request.AugmentedMatrix.Array[currentRow, curentColumn];
                                request.AugmentedMatrix.Array[currentRow, curentColumn] = request.AugmentedMatrix.Array[nextRow, curentColumn];
                                request.AugmentedMatrix.Array[nextRow, curentColumn]    = temp;
                            }
                            break;
                        }
                    }
                }


                if (Math.Abs(request.AugmentedMatrix.Array[currentRow, currentRow]) > 0)
                {
                    for (int nextRow = currentRow + 1; nextRow < request.AugmentedMatrix.NumberOfRows; nextRow++)
                    {
                        double factor = -request.AugmentedMatrix.Array[nextRow, currentRow] / request.AugmentedMatrix.Array[currentRow, currentRow];
                        for (int currentColumn = currentRow; currentColumn <= request.AugmentedMatrix.NumberOfColums; currentColumn++)
                        {
                            request.AugmentedMatrix.Array[nextRow, currentColumn] = request.AugmentedMatrix.Array[nextRow, currentColumn] + factor * request.AugmentedMatrix.Array[currentRow, currentColumn];
                        }
                    }
                }
            }
            return(base.Handle(request));
        }