In this task, you are going to write a program that did some analysis on a large input data set. The problem is defined as follows. In an experiment a beam of molecules is observed along a straight line. The information recorded for each molecule in the experiment include: position a double which represent its distance from the original in nm (nanometer) speed a double in m/s (meter per second) Energy energy that it carries in mj (micro joule) Note that due to observation error, two molecules may be observed at the same position. Definition 1: A molecule is lonely if there is no adjacent molecules that is within 100 nm. Your task is to report information related to lonely molecules in the experiment. A Sample data file is given below This point is called the origin and has a position of 0.0. All data file starts with a symbol # and ends with another symbol #. In the above file, information of 4 molecules are recorded. For example, the first molecule is at the position 23.6 nm with a speed of 3.3 ms and energy of 28 mj. There are 2 lonely molecules out of these these 4 molecules. Your program contains the following user interface. I Import data from a data file. Prompt the user for the name of a file for import. N Display the number of molecules imported R Generate a report to the display. A report contains the following information: 1. total number of molecules 2. number of lonely molecules 3. average speed of the lonely molecules 4. average energy of the lonely molecules q quit the program There is no upper limit on the total number of molecules. The user may repeatedly import the same or different data files before issuing the command R. The user could also issue command R before and after importing another file. You can safely assume all the files are error-free. All commands are case sensitive. If the user enters an invalid input, your system should prompt the user to re-enter. You can assume the user will never enter anything longer than 100 characters. GUIDELINES Do not alter the menu options or input data requirements as they will be used to test your program. Comment your code appropriately. Implement your program in stages. Design is important. Please use a linked list as the underlying data structure in this assignment. Do not hesitate to ask your lecturer or lab tutor if you are unsure of anything or encounter any difficulties. (Remember it is typically the software developer’s responsibility to clarify the requirements of the software with the client.) # 23.6 3.3 28 34.5 2.4 22 1230.6 3.3 28 450.5 2.4 22 # Important: YOU MUST SUBMIT A MAKE FILE that compiles your code on Banshee. To show all the warnings, you should compile with the -Wall option. Your code should compile without any warnings. As usual, please start early. I am always happy to discuss with you about the idea. SUBMISSION Submit your program (and Makefile, if any) via the submit command. submit –u userid –c CSCI124 –a ass3 filenames Please make sure you receive the submission receipt after submitting your files. Remember that you have to put the following information on the header of each source file you will be submitting in this assignment: • Student name • Student number • Lab Please also submit a hard copy of your code to one of your tutors or the lecturer anytime in week 9 (during the lecture, labs, or the consultation time of the lecturer) after you obtained your submission receipt. Ideally, you should hand in the hard copy during the lecture on Friday. (Reminder: Midterm on that day) An extension of time for the completion of the assignment may be granted in certain circumstances. A request for an extension must be made to the Subject Coordinator before the due date. Supporting documentation must accompany the request for extension. Late assignments without granted extension will be marked but the mark awarded will be reduced by 1 mark for each day late. Assignments more than 3 days late will not be accepted. For late submission, please use the command: submit –u userid –c CSCI124 –a ass3-late filenames