Привет. Ошибка в массиве или цикле for

static void Main(string[] args)
{
    int i,j;
    int[,] mas = { { 100 }, { 100 } };
    Console.Write("Введите n: ");
    int n = int.Parse(Console.ReadLine());
    Console.Write("Введите m: ");
    int m = int.Parse(Console.ReadLine());
    for(i =1; i <= m * n; i++)
    {
        for (j = 1; j <= m*n; j++)
        {
            mas[i, j] = i + j;
        }
        Console.WriteLine();
        for (i = 1; i <= m*n; i++)
        {
            for (j = 1; j <= m*n; j++)
            {
                Console.WriteLine(mas[i, j] + " ");
            }
        }
        Console.WriteLine();

    }
}

По идее, должен выводиться массив, который состоит из n строк и m столбцов, а каждый элемент таблицы равнялся сумме номера строки и номера столбца. Но, 1) почему-то не выводится ничего вовсе; 2) даже при каких-то корректировках с моей стороны решение неверное. Надеюсь на Вашу помощь.


Ответы (1 шт):

Автор решения: CrazyElf

Проще привести сразу правильный код:

static void Main(string[] args)
{
    Console.Write("Введите n: ");
    int n = int.Parse(Console.ReadLine());
    Console.Write("Введите m: ");
    int m = int.Parse(Console.ReadLine());
    int[,] mas = new int[m, n];
    for(var i = 0; i < m; i++)
    {
        for (var j = 0; j < n; j++)
        {
            mas[i, j] = i + j;
        }
        Console.WriteLine();
    }
    for (var i = 0; i < m; i++)
    {
        for (var j = 0; j < n; j++)
        {
            Console.Write(mas[i, j] + " ");
        }
        Console.WriteLine();
    }
    Console.WriteLine();
}

Ваши ошибки:

  • Инициализировать массив нужно того размера, который вам задан через ввод. Вы же инициализируете массив просто двумя значениями, у вас получается массив размером 1x2, в него нельзя записать произвольное число значений, больше этой размерности
  • Индексация массивов начинается с 0, а не с 1 и заканчивается n-1 и m-1 индексами
  • Переменные циклов for лучше описывать в самой конструкции цикла (см. мои комментарии к вашему вопросу)
  • Вторые два цикла должны выполняться после завершения первых двух циклов, а не внутри них
→ Ссылка