[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: MATRIX PROBLEMS (AGAIN!

cliveharber

10/8/2007 12:25:00 PM

Hi John

Instead of this:
line.each(',') { |this_record|
fields << this_record.chomp(",").strip() # read to the end of the
file into 'fields', split into lines and chomp out the delimiter
mat1[r,c] = fields[r,c] # the rows and
columns in the matrix = rows and columns in fields
c=c+1
n=n+1
if c > 19 then # loops through
each row/column. At the end of each line where c=19, reset loop onto next row
with col = 1
c = 1
end
}
which I think is the problem,

try

fields = eval("[" + line + "]")

this should turn the string into an array which you can iterate over - this comes from the Hal Fulton book so it should work.

HTH

Clive
---- John Nott <JNott@dto.ie> wrote:
> Hi everyone,
> As a complete new comer to Ruby. I have written this little piece of simple code but I have no idea why it only half works. It creates the matrix as I want it to but instead of populating it using the file as pointed to in file path, it fills it up with empty data!?
>
> If anyone has any tips on where I may be going wrong I would really really appreciate it! I have remmed the code as best as I can throughout.
>
>
>
> print "Importing Planning Sheet: 2004_extrap_Planning_Data\n"
>
> filepath = 'Q:\\TECH2006\\DBA\\02_LU\\Final TAGM 2007 (working)\\TAGM_666_Current_FROM G_DRIVE\\2004\\2004_extrap_Planning_Data.csv' #the file that contains teh data that i would like to put into the matrix
>
>
> file = File.new(filepath, 'r') # define new file as filepath
>
> mat1 = OtMatrix.new(649,19) # define new omni trans matrix 649 rows, 19 columns
>
> fields = Array.new # define fields as a new array to hold data
>
> r = 1 # matrix row r = first row
> n = 0 # n (fields) = 0
> c = 1 # matric column 1 = first column
>
> while ( !file.eof )
> line = file.gets
> line.each(',') { |this_record|
> fields << this_record.chomp(",").strip() # read to the end of the file into 'fields', split into lines and chomp out the delimiter
> mat1[r,c] = fields[r,c] # the rows and columns in the matrix = rows and columns in fields
> c=c+1
> n=n+1
> if c > 19 then # loops through each row/column. At the end of each line where c=19, reset loop onto next row with col = 1
> c = 1
> end
> }
>
> end
>
> print mat1
>
>
>
> Thanks very much in advance!
>
>
>
> #####################################################################################
> This e-mail message has been scanned for Viruses and Content and cleared
> by MailMarshal
> #####################################################################################