Привет. Ошибка в массиве или цикле 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лучше описывать в самой конструкции цикла (см. мои комментарии к вашему вопросу) - Вторые два цикла должны выполняться после завершения первых двух циклов, а не внутри них