Поиск определенного местоположения в 2d матрице c # сверху вниз, слева направо - PullRequest
0 голосов
/ 01 мая 2019

Я пишу программу для печати двумерного матричного массива, заполненного случайными числами. Пользователь вводит число, и метод ищет позицию в массиве сверху вниз, а затем слева направо, но я застрял, потому что я сбит с толку, как вернуть класс, который я создал в другом методе, чтобы использовать местоположение в моем главном способ.

Теперь я попытался добавить строки ++ и столбцы ++, если введенный номер отсутствует в этой конкретной строке или столбце, и разорвать цикл, когда число найдено.

public class Position
{
    public int row;
    public int column;
}

class Program
{
    static void Main(string[] args)
    {
        Program myProgram = new Program();
        myProgram.Start();
    }

    void Start()
    {
        int[,] matrix = new int[6, 6];
        PrintMatrix(matrix);

        Console.Write("Enter a number you're looking for: ");
        int SearchingNumber = int.Parse(Console.ReadLine());

        SearchingNumber(matrix, SearchingNumber);

        Position loc = new Position();

        Console.WriteLine($"SearchingNumber {SearchingNumber} is located the first time on location: {loc}");
    }

    //Matrix Random number
    void InitMatrixRandom(int[,] matrix, int min, int max)
    {
        Random rnd = new Random();

        for (int r = 0; r < matrix.GetLength(0); r++)
        {
            for (int c = 0; c < matrix.GetLength(1); c++)
            {
                matrix[r, c] = rnd.Next(min, max);
            }
        }
    }

    //Matrix writing
    void PrintMatrix(int[,] matrix)
    {
        InitMatrixRandom(matrix, 1, 100);

        for (int r = 0; r < matrix.GetLength(0); r++)
        {
            for (int c = 0; c < matrix.GetLength(1); c++)
            {
                Console.Write(matrix[r, c] + "\t");
            }
            Console.WriteLine();
        }
    }

    //Matrix positie
    Position SearchingNumber(int[,] matrix, int zoekGetal)
    {
        InitMatrixRandom(matrix, 1, 100);

        Position loc = new Position();

        for (int r = 0; r < matrix.GetLength(0); r++)
        {
            if (r != zoekGetal)
            {
                loc.row++;
            }
            for (int k = 0; k < matrix.GetLength(1); k++)
            {
                if (k != zoekGetal)
                {
                    loc.column++;
                }
                else if (matrix[r, k] == zoekGetal)
                {
                    break;
                }
            }
        }
        return loc;
    }
}

1 Ответ

0 голосов
/ 01 мая 2019

Я не понимаю, зачем еще раз вызывать InitMatrixRandom(matrix, 1, 100) внутри SearchingNumber метода и PrintMatrix методов?

Просто удалите вызовы -

    void Start() {
    int[, ] matrix = new int[6, 6];

    InitMatrixRandom(matrix, 1, 100); //add here

    PrintMatrix(matrix);

    int SearchingNumberVariable = int.Parse(Console.ReadLine()); //change the name because conflicting with method name

    Position loc = new Position();

    loc = SearchingNumber(matrix, SearchingNumberVariable);

}

//Matrix writing
void PrintMatrix(int[, ] matrix) {
    //InitMatrixRandom(matrix, 1, 100); //remove this

    for (int r = 0; r < matrix.GetLength(0); r++) {
        for (int c = 0; c < matrix.GetLength(1); c++) {
            Console.Write(matrix[r, c] + "\t");
        }
        Console.WriteLine();
    }
}

//Matrix positie
Position SearchingNumber(int[, ] matrix, int zoekGetal) {
    //InitMatrixRandom(matrix, 1, 100); //remove this

    Position loc = new Position();

    for (int r = 0; r < matrix.GetLength(0); r++) {
        if (r != zoekGetal) {
            loc.row++;
        }
        for (int k = 0; k < matrix.GetLength(1); k++) {
            if (k != zoekGetal) {
                loc.collumn++;
            }
            else if (matrix[r, k] == zoekGetal) {
                break;
            }
        }
    }
    return loc;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...