Создать ступенчатый массив (ошибка outofmemory) - C#
Формулировка задачи:
Помогите, не могу создать ступенчатый массив, появляется ошибка OutOfMemoryException.
Мне нужно создать сначала одномерный массив, заполнить его случайными числами, а потом создать квадратную матрицу (именно в виду ступенчатого массива, а не прямоугольного)и заполнить ее следующим образом: если в одномерном массиве X[i] == X[j], то вносить 1, если не равно - то ноль. Т.е. по диагонали должны стоять в итоге единицы. Но возникает ошибка OutOfMemoryException при инициализации ступенчатого массива
Если же я не пишу цикл инициализации ступенчатого массива, то возникает ошибка NullReferenceException
int N; // кол-во элементов int[] X; // одномерный массив int[][] C; // ступенчатый массив N = Convert.ToInt32(Console.ReadLine()); X = new int[N]; Random rnd = new Random(10); for (int i=0;i<N;i++) //заполнение одномерного массива X[i] = rnd.Next(); C = new int[X.Length][]; for (int i = 0; i < X.Length; i++) //инициализация ступенчатого массива C[i] = new int[X[i]]; for (int i = 0; i < C.Length; i++) { //заполнение ступенчатого массива for (int j = 0; j < C[i].Length; j++) { if (X[i] == X[j]) { C[i][j] = 1; } else { C[i][j] = 0; } } }
Решение задачи: «Создать ступенчатый массив (ошибка outofmemory)»
textual
Листинг программы
int N; // кол-во элементов int[] X; // одномерный массив int[][] C; // ступенчатый массив N = 10; X = new int[N]; Random rnd = new Random(10); for (int i = 0; i < N; i++) //заполнение одномерного массива X[i] = rnd.Next(0, 10); C = new int[X.Length][]; for (int i = 0; i < X.Length; i++) //инициализация ступенчатого массива C[i] = new int[X[i]]; for (int i = 0; i < C.Length; i++) { //заполнение ступенчатого массива for (int j = 0; j < C[i].Length; j++) { if (X[i] == X[j]) { C[i][j] = 1; } else { C[i][j] = 0; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д