Write a program in C++ that reads all the entries from the named-places data file /home/www/class/een318/named-places.txt and puts them in an efficiently implemented hash table. You will first have to discover the exact details of the format. This will take a little experimentation. Sometimes the fields run together and there is no space between to adjacent numbers, and sometimes the fileds have spaces inside them. The exact format is consistent from line to line, you just need to discover which character position each field begins and ends at. You can't get away with reading the file with the familiar infile >> ..., Use getline(infile, string) to read a whole line into a string variable, then extract the correct substrings using the various string methods. One you have the format, your program should define an object to represent each of the named places containing: numeric code (int) state abbreviation (string) name, with spaces trimmed from the ends (string) population (int) area (float or double) latitude (float or double) longitude (float or double) code for representative road intersection (int) distance to that intersection (float or double) Read the entire file, create the objects, and store them in a hash table. They should be hashed only on their name, not their state abbreviations. For this part, efficiency is important. Hash tables exist because of their speed, if you implement them inefficiently what's the point. In particular: do not base your hash table on a vector, use an array. Try to avoid any floating point operations. Use closed addressing. Be efficient with your linked lists. Do not make any assumptions about the size of the file. New places may be added at any time. Detect the end of the file properly. You may start off with a fixed size hash table, but before you are done, make it start small and grow as needed while the data is being read. This file, http://rabbit.eng.miami.edu/class/een318/states.txt, contains a listing of all the state abbreviations along with the full name for that state. After reading everything, the program should enter an interactive loop: If the user enters N placename The computer lists all of the states that have a place with that name. Use the states' abbreviations AND real names, one per line. If the user enters S placename state The state will be given just by its abbreviation. The computer provides all information known for the indicated place and its closest intersection. Be careful to handle place names that include spaces properly, the user might enter "S New York NY". That may take a little thought, but it is not at all difficult really. If the user enters Q The program stops Use C++ i/o and string methods, not the C libraries. Make sure you follow the requirements for submissions carefully. Only submit a word .docx file with all the required information, code and thorough tests. All plain text, no graphics format screen shots. We should be able to copy any portion of any text with the usual mouse drag and menu / key-press operations.