Loading...
Ankoun1 avatar Ankoun1 18 Точки

4. Matrix Shuffling - 80 т.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;

namespace Basic_Stack_Operations
{
    class Program
    {
        public static object Matrix { get; private set; }

        static void Main(string[] args)
        {
            int[] input = Console.ReadLine().Split().Select(int.Parse).ToArray();
          
            string[,] matrix = ReadMatrix(input[0], input[1]);

            string text;
            while ((text = Console.ReadLine()) != "END")
            {              
                string patern = @"swap (\d+) (\d+) (\d+) (\d+)";
                Match element = Regex.Match(text, patern);
                if (element.Success)
                {                    
                    int row1 = int.Parse(element.Groups[1].Value);
                    int col1 = int.Parse(element.Groups[2].Value);
                    int row2 = int.Parse(element.Groups[3].Value);
                    int col2 = int.Parse(element.Groups[4].Value);
                    if (row1 < matrix.GetLength(0) 
                        &&col1 < matrix.GetLength(1) 
                        &&row2 < matrix.GetLength(0) 
                        &&col2 < matrix.GetLength(1))
                    {
                        string newElement = matrix[row1, col1];
                        matrix[row1, col1] = matrix[row2, col2];
                        matrix[row2, col2] = newElement;
                        for (int i = 0; i < matrix.GetLength(0); i++)
                        {
                            for (int j = 0; j < matrix.GetLength(1); j++)
                            {
                                Console.Write(matrix[i, j] + " ");
                            }
                            Console.WriteLine();
                        }
                    }
                    else
                    {
                        Console.WriteLine("Invalid input!");
                    }
                }
                else
                {
                    Console.WriteLine("Invalid input!");
                }
              
            }            
            static string[,] ReadMatrix(int row, int col)
            {
                string[,] matrix = new string[row, col];
                for (int i = 0; i < matrix.GetLength(0); i++)
                {

                    string[] array = Console.ReadLine().Split(' ',StringSplitOptions.RemoveEmptyEntries).ToArray();
                    for (int j = 0; j < matrix.GetLength(1); j++)
                    {
                        matrix[i, j] = array[j];

                    }
                }
                return matrix;
            }
        }
    }
}

Тагове:
0
Module: C# Advanced 07/10/2020 13:25:03
kkaraivanov avatar kkaraivanov 486 Точки

Здравей. Нямам много време да анализирам кода и ти пействам линк на моето решение. Надявам се да ти помогне с откриване на грешката. На пръв поглед липсват проверки за скоуп-а на матрицата, не знам, трябва си дебъг. Надявам се да съм ти в помощ. Успех

0
AleksandraToncheva avatar AleksandraToncheva 25 Точки

Здравей, не виждам да проверяваш row и col дали не са по- малки от нула - изпращам ти код все пак, ако ти е от помощ - https://github.com/tonchevaAleksandra/C-SHARP-Advanced-Problems/blob/master/MultidimensionalArrays/MatrixShuffling/Program.cs

0
Ankoun1 avatar Ankoun1 18 Точки

патърнът засича отрицателните стойности (\d обхваща само числата   в интервала [0 - 9])

0
16/10/2020 16:58:25
AleksandraToncheva avatar AleksandraToncheva 25 Точки

Погледнах добре задачата и освен патърна да не засичаа правилно, друго не виждам- не знам какво ще стане ако ти дадат тест например, който ти подават без суап или ти подават суап само с три числа- дали си дебъгнал подобни варианти. И имай предвид и друго- много често така написан патърн с \d вместо с [0-9] дава грешки.

0
08/10/2020 15:53:37
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.