Для строк цикла и столбцов списка - PullRequest
0 голосов
/ 07 июля 2019

Я новичок в C # и у меня проблема с циклами for в списках. У меня есть список с числами (называемыми альфа), которые идут от 0 до 7.

alpha0=1
alpha1=2
alpha2=3
...
alpha7=8

Теперь я хочу создать матрицу, содержащую все эти альфы таким образом, а затем я хочу транспонировать ее:

IMG1

Я пытался написать транспонированный напрямую, но это дает мне ошибку или, что лучше, я ошибаюсь в синтаксисе (см. Последнюю строку моего кода). Может ли кто-нибудь мне помочь?

Я назвал стартовый список своим списком с альфа.

 List<List<double>> arr = new List<List<double>>();
 for (int col = 0; col < 8; col++)
   for (int row = 0; row < 7; row++)
      arr[col, row].Add(startinglist[col]);

Ответы [ 2 ]

1 голос
/ 07 июля 2019

Попробуйте код ниже:

  var size = 8;
  var alpha = Enumerable.Range(1, size).ToArray();
  var matrix = new int[size, size + 1];
  for (int i = 0; i < size; i++)
  {
    // Assign values on the diagonal.
    matrix[i, i] = alpha[i];
    matrix[i, i + 1] = 1 - alpha[i];
  }
0 голосов
/ 07 июля 2019

Попробуйте это:

var size = 8;
int[] alpha = Enumerable.Range(1, size).ToArray();
int[][] C = new int[size - 1][];

for(int i = 0 ; i < size - 1; i++)
{
  C[i] = new int[size];
  C[i][i] = alpha[i];
  C[i][i + 1] = 1 - alpha[i + 1];
}

Редактировать: Поскольку вы уже определили альфа как список, вы можете использовать это:

Edit2: Изменено int на double:

double[][] C = new double[alpha.Count - 1][];

for(int i = 0 ; i < alpha.Count - 1; i++)
{
  C[i] = new double[alpha.Count];
  C[i][i] = alpha[i];
  C[i][i + 1] = 1 - alpha[i + 1];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...