The world’s Largest Sharp Brain Virtual Experts Marketplace Just a click Away
Levels Tought:
Elementary,Middle School,High School,College,University,PHD
| Teaching Since: | Jul 2017 |
| Last Sign in: | 304 Weeks Ago, 6 Days Ago |
| Questions Answered: | 15833 |
| Tutorials Posted: | 15827 |
MBA,PHD, Juris Doctor
Strayer,Devery,Harvard University
Mar-1995 - Mar-2002
Manager Planning
WalMart
Mar-2001 - Feb-2009
Album Sorter
Approximate Time To Complete: 1.5 Hours
Â
You are tasked with writing a program that will sort entries by a specified column. The data given is a list of albums, the file layout will contain an album name, year, genre and artist on each line.
Â
<album name,year genre,artist>
Example:
Dive,2011,Ambient,Tycho
Â
File Example:
Epoch,2016,Electronic,Tycho Farewell,2016,Chamber,Cicada The Beatles,1968,Rock,The Beatles
Â
Your program will have to interpret 3 commands and one command line argument:
DISPLAY
SORT <column> <ASC|DESC>
QUIT
Â
The command line argment will be the filename containing the album list.
./albums albumlist.list
If a file has not been specified, the program should output:
No File Specified
and quit with return code 1.
Â
If a file does not exist the program should output:
File Does Not Exist
and quit with return code 1.
Â
The SORT command allows the user to specify the column they want the albums sorted by. The columns are within the range of [0,3], specifying column 0 will sort the albums by name. Specifying column 1 is will sort the album by year.
Â
The DISPLAY command allows the user to show the current entries and their order. If the entries have not been sorted it will show their current order. It will list each entry similar to the command separated file by after each comma there is a space.
Â
<album, year, genre, artist>
Example Output:
Dive, 2011, Electronic, Tycho Portraits, 2015, Electronic, Maribou State Mer De Noms, 2000, Hard Rock, A Perfect Circle
Â
The QUIT command allows the user to quit the program and should trigger any cleaning up of memory that had been allocated over the life time of the program.
Â
You have been provided with a small list to test your program with.
(assortment.list)
Â
You are recommended to use the qsort() function to sort the albums and practice using function pointers (creating a comparator function) as well as using strtok() (or sscanf()) for parsing the data.
Â
Assumptions/Clarifications:
* You can assume that there are only 4 attributes
* Maximum Line Length is 8192 characters (although we would encourage you to handle variable line length)
* If ASC or DESC has not been specified your program should sort ascending by default.
* You are just sorting by the column. (We assume the order is based on first read, previous sorts may affect subsequent order but if the entries are mapped the same way in the file, the output will be the same).
Â
Examples:
Example 1:
./albums assortment.list
Â
DISPLAY
Dive, 2011, Electronic, Tycho
Portraits, 2015, Electronic, Maribou State
Mer De Noms, 2000, Hard Rock, A Perfect Circle
Awake, 2014, Electronic, Tycho
Epoch, 2016, Electronic, Tycho
Farewell, 2016, Chamber, Cicada
The Beatles, 1968, Rock, The Beatles
Sines, 2014, Post-Metal, Jakob
QUIT
Â
Example 2:
Â
./albums assortment.list
Â
SORT 1 ASC
DISPLAY
The Beatles, 1968, Rock, The Beatles
Mer De Noms, 2000, Hard Rock, A Perfect Circle
Dive, 2011, Electronic, Tycho
Sines, 2014, Post-Metal, Jakob
Awake, 2014, Electronic, Tycho
Portraits, 2015, Electronic, Maribou State
Farewell, 2016, Chamber, Cicada
Epoch, 2016, Electronic, Tycho
QUIT
Â
Example 3:
./albums assortment.list
Â
SORT 0 DESC
DISPLAY
The Beatles, 1968, Rock, The Beatles
Sines, 2014, Post-Metal, Jakob
Portraits, 2015, Electronic, Maribou State
Mer De Noms, 2000, Hard Rock, A Perfect Circle
Farewell, 2016, Chamber, Cicada
Epoch, 2016, Electronic, Tycho
Dive, 2011, Electronic, Tycho
Awake, 2014, Electronic, Tycho
QUIT
Â
Example 4:
./albums assortment.list
Â
SORT 3 ASC
DISPLAY
Mer De Noms, 2000, Hard Rock, A Perfect Circle
Farewell, 2016, Chamber, Cicada
Sines, 2014, Post-Metal, Jakob
Portraits, 2015, Electronic, Maribou State
The Beatles, 1968, Rock, The Beatles
Epoch, 2016, Electronic, Tycho
Awake, 2014, Electronic, Tycho
Dive, 2011, Electronic, Tycho
QUIT
Â
Example 5:
./albums does_not_exist.list
Â
File Does Not Exist
Â
Example 6:
./albums
Â
No File SpecifiedDive,2011,Electronic,Tycho
Portraits,2015,Electronic,Maribou State
Mer De Noms,2000,Hard Rock,A Perfect Circle
Awake,2014,Electronic,Tycho
Epoch,2016,Electronic,Tycho
Farewell,2016,Chamber,Cicada
The Beatles,1968,Rock,The Beatles
Sines,2014,Post-Metal,Jakob
----------- Â ----------- H-----------ell-----------o S-----------ir/-----------Mad-----------am ----------- Th-----------ank----------- yo-----------u f-----------or -----------you-----------r i-----------nte-----------res-----------t a-----------nd -----------buy-----------ing----------- my----------- po-----------ste-----------d s-----------olu-----------tio-----------n. -----------Ple-----------ase----------- pi-----------ng -----------me -----------on -----------cha-----------t I----------- am----------- on-----------lin-----------e o-----------r i-----------nbo-----------x m-----------e a----------- me-----------ssa-----------ge -----------I w-----------ill----------- be----------- qu-----------ick-----------ly