requestHelp needed with Eiffel program using hashed_dictionary

I can't seem to get my program to setup the hashed dictionary correctly. It seems to keep the last entry in, and references every key to that entry.

dictsetup(h:HASHED_DICTIONARY [HASHED_SET[STRING], STRING]; fname:STRING) is
		local
			in_file: TEXT_FILE_READ;
			t, t0: STRING
		do
			from
				!!in_file.connect_to(fname)
				!!set.make
			until
				in_file.end_of_input
			loop
				set.clear_count
				in_file.read_word
				t := in_file.last_string
				t.to_lower
 
				t0 := t.twin
				sortstring(t0)
 
				if h.has(t0) then
					h.at(t0).add(t)
				else
					set.add(t)
					h.fast_put(set,t0)
				end
 
 
			end
			in_file.disconnect
		end

I want the method to take in each word from the file, get a sorted version of that word and add it to the dictionary. It gets added in a set of words that have the same key (sorted version). If the sorted version of the word has been met before then we add it to the set referenced by that word, else we create a new set with that word and add it to the dictionary with the sorted word as a key.

Help needed urgently :(

0
Your rating: None

Comments

You're storing a REFERENCE in

berend's picture

You're storing a REFERENCE in they array, i.e. last_string is exactly that: the last_string read.

The solution is:

  t := in_file.last_string.twin

Syndicate content