Как сохранить строку из текстового файла в массив фиксированного размера - PullRequest
0 голосов
/ 04 апреля 2020

Итак, у меня есть этот сценарий, в котором я читаю из файла, структура которого выглядит следующим образом:

4
4 8 2 1
2 4 6 3
3 6 9 2
1 3 2 8

Где 4 в первой строке - размер матрицы, которая будет сгенерирована , Строки ниже - это значения матрицы, которые всегда будут многомерной матрицей размером [4,4], что означает, что в ней будет 4 строки и 4 столбца.

Как я могу сохранить это в структуре данных и получить доступ к элементы для выполнения расчетов?

Мой текущий код:

class Program
{
    static void Main(string[] args)
    {
        var fileName = "sampleinput.txt";
        int T = Convert.ToInt32(File.ReadLines(fileName).First()); // gets the first line from file.
        var lines = File.ReadLines(fileName).Skip(1).Take(T);
        int[,] array1 = new int[T, T];
        foreach(var line in lines)
        {

            Console.WriteLine(line);
            //How to store the values here in a multidimensional array and access the values as required?
        }

    }
}

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

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

class Program
{
static void Main(string[] args)
{
    var fileName = "sampleinput.txt";
    int T = Convert.ToInt32(File.ReadLines(fileName).First()); // gets the first line 
     from file.
    var lines = File.ReadLines(fileName).Skip(1).Take(T);
    int[,] array1 = new int[T, T];
    var n = 0
    foreach(var line in lines)
    {
        var j = 0; 
       foreach(var i in line.Split().Select(s => int.Parse(s))) 
       { 
        array1 [n, j] = i;
        j++; 
       }
      n++;
    }

}
}
0 голосов
/ 05 апреля 2020

Похоже, вы учитесь управлять строками и использовать структуры данных. В foreach l oop вы получаете одну строку из файла в переменной строке. Таким образом, вы можете разбить эту строку, затем сохранить в строковый массив, а затем запустить новый l oop внутри вашего foreach l oop, который перебирает этот строковый массив и присваивает значения вашему многомерному массиву следующим образом:

 class Program
{
    static void Main(string[] args)
    {
        var fileName = "sampleinput.txt";
        int T = Convert.ToInt32(File.ReadLines(fileName).First()); // gets the first line from file.
        var lines = File.ReadLines(fileName).Skip(1).Take(T);
        int[,] array1 = new int[T, T];
        foreach(var line in lines)
        {
            string[] lineElements = line.Split(" ");
            int j=0;
            for(int i=0;i<lineElements.Length;i++)
            {
               array1[j,i] = Convert.ToInt32(lineElements[i]);
            }
            j++;
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...