Создать ступенчатый массив (ошибка 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;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы