0

I have a file array.txt that consists of numbers. I need to make a 2D array from it. How can I do that?

0 6 10 0 0 0 0 0 0 0
6 0 12 11 14 0 0 0 0 0
10 12 0 12 0 0 8 16 0 0
0 11 12 0 0 6 3 0 0 0
0 14 0 0 0 4 0 0 6 0
0 0 0 6 4 0 0 0 12 0
0 0 8 3 0 0 0 0 16 6
0 0 16 0 0 0 0 0 0 8
0 0 0 0 6 12 16 0 0 13
0 0 0 0 0 0 6 8 13 0
Ma Rat
  • 1

2 Answers2

0

You must have 2 variable for row and column ...Read the file until read new line, Put every number in arr[column][row] and add 1 to column, When read new line add 1 to row and read number in new line again.

Ali
  • 3,373
  • 5
  • 42
  • 54
0

+combo_ci is correct. You need to read the file, look for the spaces to increment the column and the new line combo CR-LF to increase the row. Here is a modified example that I worked up to read an Excel CSV file. The only difference is that I replaced the comma separator with a space

'Reading a space deliminted file
    TextWindow.Show()

    LoadFile()
    TextWindow.WriteLine("File Size = " + Text.GetLength(DataIn))
    ParseFile()
    TextWindow.WriteLine("Rows = " + rows + ",  Columns = " + cols)
    DisplayTable()

    '---------------------------------------------------------------

    'Read the contents of the CSV style (spaces instead of commas) file into memory
    Sub LoadFile
      filename = Program.Directory
      filename = filename + "\excelintoSB.csv"

      DataIn = File.ReadContents(filename)
    EndSub

    'Parse the file contents, looking for spaces and line breaks to separate the cells. 
    Sub ParseFile
      row = 1
      col = 1
      cell = ""

      For i =1 To Text.GetLength(DataIn)  'Look at each character in the file
        ch = Text.GetSubText(DataIn,i,1)
        'Is it a space or a cariage return? Store the Cell
        If ch = " " or text.GetCharacterCode(ch) = 13 then
          table[row][col] = cell
          cell = ""
          If text.GetCharacterCode(ch) = 13 Then 'end of row, start a new one
            row = row + 1
            col = 1
          Else 'New Cell, current row
            col = col + 1
            If col > maxCol then 'Keep track of how many columns we have encountered
              maxCol = col
            endif
          endif
        ElseIf text.GetCharacterCode(ch) <> 10 then 'build the cell, ignoring line feeds.
          cell = cell + ch
        EndIf
      EndFor
      rows = row - 1
      cols = maxCol
    EndSub

    'Display the table in row / column format
    Sub DisplayTable
      TextWindow.WriteLine("The Table --- ")
      For i = 1 To rows
        TextWindow.Write("[ ")
        For j = 1 To cols
          TextWindow.Write(table[i][j] + " ")
        EndFor
        TextWindow.WriteLine("]")
      EndFor
    EndSub
codingCat
  • 2,396
  • 4
  • 21
  • 27