Directions
For this mission you’ll be designing and implementing a system, in both C or C++, to Help a celebration of adventurers handle their gear. Every celebration member has some assortment of kit of their pack and you will have to determine the entire set of things the celebration has entry to, which gadgets there are duplicates of, which gadgets just one member has, and which gadgets they’re missing.
For the mission you might, for those who select, work in small teams of as much as three college students. I’ll want the names of all the group members emailed to me by no later than midnight (5/21). Any pupil who will not be in one of many teams I obtain emails for might be assumed to be engaged on their very own. A listing of teams and their members might be posted on Canvas, after it’s compiled. A gaggle can’t be modified as soon as created, until it’s utterly dissolved. All members of a bunch will obtain the identical grade, and all members are anticipated to contribute equally to the programming and report. Just one submission per group might be required, however a bunch is not going to be penalized for having a number of members submit the finished mission.
Additionally, as a reminder, all the code for this project should be written by you. You could not share code or obtain options off the web, as doing so might be thought-about dishonest.
Necessities
This project has two elements: a design portion and an implementation portion.
Design Doc
For the design portion, it’s essential to generate documentation, in PDF format, describing your system and design course of. The aim of that is so that you can clarify not simply what your system is doing, and the way it’s doing it, however why. You will have to justify your design choices in a concise, informative method. Justifications comparable to “I did this as a result of it was straightforward” aren’t adequate, as you need to really clarify why a selected knowledge construction or algorithm was extra environment friendly, efficient, or optimum. Moreover, commented code, whereas generally useful in small examples, will not be a adequate clarification in and of itself. Your explanations and justifications are anticipated to be introduced in prose and in paragraph format, i.e. not bulleted lists. Additional, a part of the analysis of your design doc is the obvious quantity of thought and energy that went into its creation.
This doc must be divided into 4 essential elements, every with an applicable header.
Within the first half, you need to describe your design course of. Did you’re employed out the algorithm on paper or a whiteboard earlier than hand? Did you draw UML diagrams of the system? Did you create a small prototype? Did you merely begin coding away after which recode a few times with newfound understanding? In a number of paragraphs, describe intimately the way you went about designing the system, and make sure you present adequate justification of your methodology.
For the second half, you need to describe the info buildings you utilized in your system. What, if any, objects or structs did you create to retailer knowledge? How did you set up and handle them? What forms of formal knowledge buildings did you make use of (timber, graphs, arrays, hashes, and so forth)? In a number of paragraphs, describe intimately the way you saved the assorted knowledge parts in your system, and make sure you present adequate justification of your methodology.
For the third half, you need to describe performance of your system. How is knowledge moved and remodeled? How is it learn in? How is it output? What are the assorted main features you constructed and the way do they work? In a number of paragraphs, describe intimately how your system works, and make sure you present adequate justification of your methodology. You may also contemplate together with diagrams to extra simply visualize how all the items match collectively.
Implementation
Your program should present the next performance and cling to the next constraints:
ï‚· Enable the person to decide on the file describing celebration they need analyzed (mustn’t require recompilation)
o The primary line of the file would be the comma delimited common set
o All subsequent strains can have the celebration member’s identify adopted by a colon after which the comma delimited set of their gear
o All enter recordsdata (besides the bonus) might be formatted on this method
ï‚· Every member’s set of kit should be saved as a bit vector
o Both a binary integer (zero,1) bit vector or a Boolean bit vector is appropriate
ï‚· All ensuing units, such because the set of things the celebration has entry to, should be generated by way of set operations
ï‚· You could not use any of the set containers or set operations/algorithms offered by C or C++ o Examples: bitsets, units, multisets, set_union, set_intersection, set_difference
ï‚· Your program ought to alert the person if an merchandise that isn’t within the common set is in a celebration members gear
ï‚· Your program ought to output o The common set of things
o Every celebration member’s identify adopted by their set of things
o The set of things the celebration as an entire has entry to
o The set of duplicate gadgets
o The set of things owned by just one celebration member
o The set of things the celebration is missing
ï‚· The output must be offered to the person in a simple to learn and perceive format. Outputting a string of only one’s and zero’s with none description of what every 1 and zero means, will not be straightforward to learn or perceive for customers unfamiliar together with your system.
ï‚· Your code should be properly commented.
ï‚· You could present a brief README file which incorporates your identify and explains how one can compile and run your program.
ï‚· Moreover, you might write a makefile if you need your code to compile with extra flags.
Submission
A .zip file containing the next:
1. All recordsdata essential to compile and run your program
2. A README file explaining how one can compile and run your program
three. Your design doc in PDF format
Bonus
For 10 bonus factors, your system should be capable to handle the packs with out understanding the common set forward of time. Successfully, it’s essential to assemble the common set on the fly, and replace the bit vectors of every celebration member as new gadgets are found. Consequently, you do not want to alert the person a couple of celebration member’s gear not being within the common set.