Instructions

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 12

Project-3: Santa’s Lists
F15 CSCI 232 - Data Structures and Algorithms
Phillip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Museum Building, Room 105
October 14, 2015
Project-3: Due 2015-10-26 by midnight
Purpose: Santa is getting ready for the upcoming Holiday Season. He has been spending all year long
creating lists of those who are naughty and those who are nice. These lists can be long and difficult to
manage. He would desperately like for a program where he could load these list data items, in such a way
that they are sorted by country and postal code so he can then print out the list in this ordered fashion on
the Big Day. The output should also include the list of gifts for each nice girl and boy, and the single gift of
coal for all the naughty children.
You are provided Axioms for the ADT List along with pre- and postconditions. You must provide a
linked list implementation of the ADT List that conforms with the specifications (the Axioms and pre- and
postconditions) and provides the behavior of the ADT List and functions as described below.
Objectives:
Using UML Diagrams to Specify ADT
Using existing C++ class methods
Create methods that implement the ADT List
Manipulate Lists of Complex Data Types
Manipulate Linked List Structures
Work with Pointers in C++
Pass objects by reference
Use C++ source file standards and doxygen to generate documentation
Modify and add features to the provided main program
Obtaining the Project Files: You will complete the project using your own user account on the de-
partment’s linux system katie.mtech.edu. You should ssh into your account, and execute the command
mkdir -p csci232/proj3. This will make the directory proj3 inside the directory csci232, and also create
the directory csci232 if it does not yet exist - which it should from our previous lab session. You should then
change the current working directory to proj3 by executing the command cd csci232/proj3. You can test
that you are in the correct current working directory by executing the command pwd which should print some-
thing like /home/students/<username>/csci232/proj3, where <username> is replaced with the username
associated with your account. Lastly, execute the command tar -xzvf ~curtiss/csci232/proj3.tgz and
this will expand the project files from the archive into your current working directory. You may consult
man tar to learn about the archive utility and its command line options.
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
Table 1: UML Specification of ADT List
+isEmpty ( ) : bo ol ea n
+getLength ( ) : i n t e g e r
+i n s e r t ( n ew Po si ti on : i n t e g e r , newEntry : ItemType ) : b oo le an
+remove ( p o s i t i o n : i n t e g e r ) : bo ol ea n
+c l e a r ( ) : void
+getEntry ( p o s i t i o n : i n t e g e r ) : ItemType
+s et Entr y ( p o s i t i o n : i n teg er , newEntry : ItemType ) : void
+swap ( p os i t io n A : i n t e g e r , p o s it i o nB : i n t e r g e r ) : b oo le an
+r e v e r s e ( ) : void
+r e p l a c e ( p o s i t i o n : i n te g er , newEntry : ItemType ) : boolean
+g e t P o s i t i o n ( en try : ItemType ) : i n t e g e r
+c o n t a i n s ( e n tr y : ItemType ) : b oo le an
+l o a d L i s t ( s t r i n g : f i l e n a m e ) : b oo le an
+displayList (): void
Project Function: Your program will be provided different test files to read where each line of the file
contains the following items in the following structure:
Token-0: List name ’naughty’ ’nice’
Token-1: 2-character country code
Token-2: Integer-based postal code
Token-3: Last Name of Girl or Boy
Token-4: First Name of Girl or Boy
Token-5...n: List of Single Word Strings representing gift(s)
An extract of such a file:
nice us 59701 coe doug chemistry_set hawaiian_shirt baseball_cap
naughty ru 129 potin vladamir coal
You will need to instantiate multiple lists, each with a structure where each item in the list should contain
the following:
Country Code
Postal Code
Last Name
First Name
A List - of gift(s)
You need to add and remove items from the list in a way that ensures the items in the list for a given set
of country codes are clustered in a contiguous group, and the items within this group are ordered by their
postal code. When the list is displayed, the output should be a report consisting of multiple rows of the form:
Country: us Postal Code: 59701 Last Name: coe First Name: Doug
Gifts: chemistry set hawaiian shirt baseball cap ...
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 2 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
Table 2: Axioms for List ADT
Axiom 1. (new List()).isEmpty() = true
Axiom 2. (new List()).getLength() = 0
Axiom 3. aList .getLength() = (aList. insert ( i , x )). getLength() 1
Axiom 4. aList .getLength() = (aList.remove(i)).getLength() + 1
Axiom 5. (aList . insert ( i , item )).isEmpty() = false
Axiom 6. (new List()).remove(i) = false
Axiom 7. (aList . insert (i , x )). remove(i) = aList
Axiom 8. (new List()).getEntry(i) = error
Axiom 9. (aList . insert (i , x )). getEntry(i ) = x
Axiom 10. aList .getEntry(i ) = (aList. insert ( i , x )). getEntry(i + 1)
Axiom 11. aList .getEntry(i + 1) = (aList.remove(i)).getEntry(i)
Axiom 12. (new List()).setEntry(i , x) = error
Axiom 13. (aList .setEntry( i , x )). getEntry(i ) = x
The list of Axioms for the List ADT should not be violated in your implementation and you should
definitely take care to make use of exception handling throughout your implementation to assist your program
in recovering gracefully from errors.
You are required to use Javadoc-style comments so doxygen can be used to create html or pdf documen-
tation from your code. Examples of complaint comments are provided throughout the supplied source files.
For further doxygen documentation see the site http://doxygen.org.
Building the Project: The project includes a Makefile you may use to generate the object and executable
files from source code files. Similarly, some of the source code files can be generated from the UML diagram
that is also included. Consult the Makefile and understand the rules included and the dependencies and
the rule sets that are used to generate the executable program. Use caution when updating the Makefile
to ensure rule sets make sense.
Helpful Reminders: Study and pay close attention to the provided class(es) and methods. Understand
their return types and use them in the code you author to provide robust code that can handle exceptions to
inputs and boundary conditions. Look at all the code provided. Read the codes’s comments and implement
what is required where indicated. The feedback provided to the user may be poor in certain areas of the
main driver program. Fix this and provide appropriate feedback to the end-user to inform them of what the
program is doing. Make sure the user confirms actions that result in modifications to the contents of their
bag. Be cognizant of the best practices we discussed in lecture and abide by good coding style - all of which
will be factored into the assessment and grade for this project. Be sure to review the UML diagram and the
Makefile and understand how files are being generated and their dependencies.
Submission of Project: You have been provided a Makefile for this project that will help you not only
build your project, but also submit the project in the correct format for assessment and grading. Toward
the bottom of the provided Makefile you should see lines that look like:
#Rule to submit programming as s ig n me nt s to g r a d e r s
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 3 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
#Make s ure you modify the $ ( sub j ) $ ( msg) above and the l i s t o f attachment
#f i l e s in the f o l l o w i n g r u l e each f i l e needs to be prec ee ded with an
#a f l a g as shown
sub j = CSCI232 DSA Pr oj3 ”
msg = ” P leas e r ev iew and g rade my Pro jec t 3 Submission
submit : l i s t i n g A1 . cpp l i s t i n g A2 . cpp
$ ( t a r ) $ (USER)p r o j 3 . t g z $ ?
echo $ ( msg ) |$ ( mail ) s $ ( s ub j ) a $ (USER)p r o j 3 . t a r . gz $ ( ad dr )
Make sure you update the dependencies on the submit: line to ensure all the required files (source files)
are included in the archive that gets created and then attached to your email for submission. You do not
need to print out any of your program files - submitting them via email will date and time stamp them and
we shall know they come from your account. If you submit multiple versions, we will use the latest version
up to when the project is due.
Extra Credit: Create a UML diagram that represents the relationship between classes and interfaces.
You should use the UML tools in the dia graphing program. Once you generate the files, either (1) rename
the existing files and replace them with the output of the dia2code -t cpp files, or (2) moify the source files
to use the output of the dia2code -t cpp command - don’t forget to update the Makefile as appropriate.
Questions: If you have any questions, please do not hesitate to get in contact with either Phil Curtiss
(pjcurtiss@mtech.edu) or Ross Moon (rmoon@mtech.edu) at your convenicne, or stop by during office
hours, and/or avail yourself of the time in the MUS lab when Ross is available.
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 4 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
Project File Manifest:
List Interface
/I n t e r f a c e f o r t he ADT l i s t
@file ListInterface .h
/
#i fn de f LIST INTERFACE
#define LIST INTERFACE
#include Node . h
template <class ItemType >class ListInterface
{
public :
/S ees whet her t h i s l i s t i s empty .
@r etu rn True i f t h e l i s t i s empty ; o t h e r w i s e r e t u r n s f a l s e . /
vi rtu al bool isEmpty ( ) const = 0 ;
/Gets t he c u r r ent number o f e n t r i e s in t h i s l i s t .
@return The i n t e g e r number o f e n t r i e s c u r r e nt l y i n t he l i s t . /
vi rtu al i nt getLength () const = 0 ;
/I n s e r t s an e nt ry i n to t h i s l i s t at a g iv en p o s i t i o n .
@pre None .
@post I f 1 <= position <= get Le ng th ( ) + 1 and t he i n s e r t i o n i s
s u c c e s s fu l , newEntry i s at t he given p o s i t i o n i n the l i s t ,
o t h e r e n t r i e s a re renumb er ed a c c o r d i n g l y , and t h e r e t u r n e d
v a l u e i s t r u e .
@param n ewP os it io n The l i s t p o s i t i o n a t which t o i n s e r t newEntry .
@param newEntry The e ntry t o i n s e r t i n t o t h e l i s t .
@return True i f i n s e r t i o n i s s u c c es s f u l , or f a l s e i f not . /
vi rtu al bool insert(int newPosition , const ItemType & newEntry ) = 0 ;
/Removes the e nt ry a t a g iven p o s i t i o n from t h i s l i s t .
@pre None .
@post I f 1 <= position <= get Le ngt h ( ) and t h e removal i s s u c c e s s f u l ,
the entr y a t t he g iv en p o s i t i o n i n the l i s t i s removed , o th er
i te m s a re r en um bered a c c o r d i n g l y , and t h e r e t u r n e d v a l u e i s t r u e .
@param p o s i t i o n The l i s t p o s i t i o n o f t he e ntr y to remove .
@return True i f removal i s s u c c e s s f u l , or f a l s e i f not . /
vi rtu al bool remove ( in t position) = 0;
/Removes a l l e n t r i e s from t h i s l i s t .
@post L i s t c o n t a i n s no e n t r i e s and t h e co un t o f i t em s i s 0 . /
vi rtu al void c l e a r ( ) = 0 ;
/Gets t he e nt ry a t t he g iven p o s i t i o n i n t h i s l i s t .
@pre 1 <= position <= get L e ngt h ( ) .
@post The d e s i r e d e n tr y has bee n r e tu r ne d .
@param p o s i t i o n The l i s t p o s i t i o n o f t he d e s ir e d entr y .
@return The ent ry a t t he g iven p o s i t i o n . /
vi rtu al Node<ItemType>getEntry ( int position) const = 0 ;
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 5 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
/R eplace s t he e nt ry a t t he g iv en p o s i t i o n i n t h i s l i s t .
@pre 1 <= position <= get L e ngt h ( ) .
@post The e ntr y a t t he given p o s i t i o n i s newEntry .
@param p o s i t i o n The l i s t p o s i t i o n o f t he e ntr y to r e p la ce .
@param newEntry The re pl ace me nt e n t r y . /
vi rtu al void setEntry(i nt position , const ItemType & newEntry ) = 0 ;
/Returns the p o s i t i o n w it hi n t he L i s t o f t he entr y provi ded or 1 i f
not found i n t he L i s t
@pre 1 <= position <= g e tL e n g th ( )
@post none
@param e nt r y t o s ea rc h f o r i n t he L i s t
@return t he p o s i t i o n w ith in t he L i s t i f e nt ry i s found , or 1 o t h e r w i s e /
vi rtu al in t getPosition(const ItemType & e nt ry ) = 0 ;
/Returns a b oo lean v a l ue i n d i c a t i n g whether t he e nt ry p ro vid ed i s i n t he L i s t
@pre none
@post none
@param e nt r y t o s ea rc h f o r i n t he L i s t
@ r et urn b oo lea n v alue i n d i c a t i n g whethe r t he e ntr y i s i n the L i s t /
vi rtu al bool c o n t a i n s ( const ItemType & e nt ry ) = 0 ;
/l o a d s t h e L i s t w i th e n t r i e s from t h e f i l e r e f e r e n c e d by t h e f i l en a m e
provided
@pre none
@post L i s t ha s e n t r i e s from t he f i l e r e f e r e n c e d by t h e f i le n a m e
@param s t r i n g r e f e r e n c i n g t h e f i le n am e
@return boo lean i n d i c a t i n g i f t he o pe ration wass s u c c e s s f u l /
vi rtu al bool loadList(const s t r i n g f i l e n a m e ) = 0 ;
/d i s p l a y s a t a b u l a r r e p r e s e n t a i t o n o f t he L i s t
@pre none
@post none
@param none
@return v oid /
vi rtu al void displayList () = 0;
};// end ListInterface
#endif
List Main Driver
/@ f i l e L i s t D r i v e r . cpp
L i s t Main D riv er u se t o g e n e r a t e S ant a L i s t
@author P h i l C u r t i s s
@version 1 . 0
@date 10/14/15
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/
//
// Using s t a t e m e n t s
//
using namespace std ;
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 6 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
//
// C++ i n c l u d e s
//
#include <iostream>
#include <fstream>
#include <s t r i n g >
//
// A p p l i c a t i o n i n c l u d e s
//
#include L i s t I n t e r f a c e . h
#include ListADT . h
/L i s t D ri ver use t o h e l p Santa w it h h i s L i s t s
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/
int main ( int argc , char argv [ ] )
{
// I n s t a n t i a t e a ListADT o b j e c t
ListInterface<s t r i n g >naughtyList = new ListADT<s t r i n g >();
ListInterface<s t r i n g >n i c e L i s t = new ListADT<s t r i n g >();
// Check t o make s ur e we ar e pa ss ed one or more f i l e n a m e s t o
// p r o c e s s f o r S ant a i n s e r t i n to our ListADT ( ) in such a way
// t h a t t he e n t r i e s are ord er ed and grouped .
i f (argc <3){
cou t << Usage << ” f o o ” << ” : <naughty f il en am e > < n i c e f i le na me ><< end l ;
return (1);
}
// We now have commmand l i n e arguments t o pr oce ss , so l e t ’ s
// g e t t o i t and p o p u l a t e s a nt a s l i s t s
i f (naughtyList>l o a d L i s t ( argv [ 1 ] ) == f a l s e )
cou t << ” Problem re a ding e n t r i e s from naughty l i s t : << argv [ 1 ] << end l ;
i f (niceList>l o a d L i s t ( argv [ 2 ] ) == f a l s e )
cou t << ” Problem re a ding e n t r i e s from n ice l i s t : << argv [ 2 ] << end l ;
// I f t he l i s t has some item s pr esen t , th en l e t s d i s p l a y t h i s
// l i s t f o r Santa
cou t << ” Your s o r t e d n i c e l i s t o f boys and g i r l s t o v i s i t : << e ndl ;
i f (niceList>isEmpty ( ) == f a l s e )
niceList>displayList ();
e l s e
cou t << Couldn t f i n d any ni c e l i t t l e borys and g i r l s . ; ( << end l ;
// I f t he l i s t has some item s pr esen t , th en l e t s d i s p l a y t h i s
// l i s t f o r Santa
cou t << ” Your s o r t e d naughty l i s t o f boys and g i r l s to v i s i t : << en dl ;
i f (naughtyList>isEmpty ( ) == f a l s e )
naughtyList>displayList ();
e l s e
cou t << Couldn t f i n d any naughty l i t t l e boys and g i r l s . : ) << end l ;
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 7 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
return 0 ; // Exit program
}//main ( )
Node Header
/@ f i l e Node . h /
#i fn de f NODE
#define NODE
template <class ItemType>
class Node
{
private :
ItemType item ; // A data item
Node<ItemType>next ; // P o int er t o nex t node
public :
Node ( ) ;
Node( const ItemType& anItem ) ;
Node( const ItemType& anItem , Node<ItemType>nextNodePtr );
void setItem( const ItemType& anItem ) ;
void s et Ne xt ( Node<ItemType>nextNodePtr );
ItemType g et It em ( ) const ;
Node<ItemType>getN ext ( ) const ;
};// end Node
#include Node . cpp
#endif
Node Implementation
/@ f i l e Node . cpp /
#i fn de f NODEIMP
#define NODEIMP
#include Node . h
#include <c stdde f >
template <class ItemType >
Node <ItemType >:: Node ( ) : next ( n u l l p t r )
{
}// end d e f a u l t c o n s t r u c t o r
template <class ItemType >
Node <ItemType >:: Node ( const ItemType & anItem ) : item ( anItem ) , next ( n u l l p t r )
{
}// end constructor
template <class ItemType >
Node <ItemType >:: Node ( const ItemType & anItem ,
Node <ItemType >nextNodePtr ) : item ( anItem ) ,
next (nextNodePtr)
{
}// end constructor
template <class ItemType >
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 8 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
void Node <ItemType >::setItem (const ItemType & anItem )
{
item = anItem ;
}// end s e t I t e m
template <class ItemType >
void Node <ItemType >:: s et Ne xt ( Node <ItemType >nextNodePtr )
{
next = nextNodePtr ;
}// end s e t N e x t
template <class ItemType >
ItemType Node <ItemType >:: g etI te m ( ) const
{
return item ;
}// end g e tIt e m
template <class ItemType >
Node <ItemType >Node <ItemType >:: getNext ( ) const
{
return next ;
}// end g e tNe x t
#endif
ListADT Header
/
ListADT : Linked L i s t Im pl em en ta tio n
/
#i fn de f LISTADT
#define LISTADT
#include L i s t I n t e r f a c e . h
#include Node . h
template<class ItemType>
class ListADT : public ListInterface<ItemType>
{
private :
// Whatever p r i v a t e we need
public :
// Must have at l e a s t t h es e based on I n t e r f a c e
ListADT ( ) ;
˜ ListADT ( ) ;
bool isEmpty ( ) const ;
int getLength () const ;
bool insert(int newPosition , const ItemType& newEntry ) ;
bool remove ( int position );
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 9 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
void c l e a r ( ) ;
Node<ItemType>ge tEn try ( in t position ) const ;
void setEntry(i nt position , const ItemType& newEntry ) ;
int getPosition(const ItemType& e ntr y ) ;
bool c o n t a i n s ( const ItemType& en t ry ) ;
bool loadList(const s t r i n g f i l e n a m e ) ;
void displayList ();
};
#include ListADT . cpp
#endif
ListADT Implementation
/
Implementation
/
#i fn de f LISTADTIMP
#define LISTADTIMP
#include L i s t I n t e r f a c e . h
#include ListADT . h
#include Node . h
template<class ItemType>
ListADT<ItemType >:: ListADT ( ) {}
template<class ItemType>
bool ListADT<ItemType >: : isEmpty ( ) const {return true ;}
template<class ItemType>
int ListADT<ItemType >: : ge tL eng th ( ) const {return 1 ; }
template<class ItemType>
bool ListADT<ItemType >:: insert(i nt newPosition , const ItemType& newEntry ) {return 1 ; }
template<class ItemType>
Node<ItemType>ListADT<ItemType >: : getEntry ( i nt position) const {Node<ItemType>nPtr = n u l l p t r ; return nPtr ; }
template<class ItemType>
void ListADT<ItemType >:: s etE ntr y ( i nt position , const ItemType& newEntry ) {}
template<class ItemType>
int ListADT<ItemType >::getPosition (const ItemType& e ntr y ) {return 1 ; }
template<class ItemType>
bool ListADT<ItemType >: : c o n t a i n s ( const ItemType& e ntr y ) {return true ;}
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 10 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
template<class ItemType>
bool ListADT<ItemType >: : l o a d L i s t ( const s t r i n g f i l e n a m e ) {return true ;}
#endif
Makefile
#
#Makefile for Ge ner ati ng C++ e x e c u t a b l e s
#
#F15 CSCI 232 Data S t r u c t u r e s and Algorithms
#P h i l l i p J . C ur ti s s , A s so c i a t e P r o f e s s o r
#Computer S c i e n c e Department , Montana Tech
#Museum Bui l din g s , Room 105
#
#Project 3: Santa s L i s t s
#Date Assigned : 20151014
#Date Due : 20151026 by Midnight
#Def in e Macros r e l a t e d to p r i n t i n g and s ubm itt i ng programs
a2ps = a2ps T 2
mail = mail
addr = pcurti ss@mtech . edu rmoon@mtech . edu
t a r = t a r c v z f
#D e fi n e Macros t o he l p g e n e r a t e t he program f i l e r e q u i r e d
DIA = di a2c ode
C++ = g++ s td=c++11
CFLAGS = Wall Werror
LD = g++
LDFLAGS =
LIBS =
OBJS = L i s t D r i v e r . o ListADT . o Node . o
EXEC = p r o j 3
#Provide dependency l i s t s here , one on each line don ’ t f o r g e t to make s ur e
# i f you have sour c e f i l e s depending ( or g en er at ed by ) UML diagrams to include them as w e l l
. SUFFIXES : . d ia
a l l : $ (EXEC)
${EXEC}: ListDriver .o
L i s t D r i v e r . o : L i s t I n t e r f a c e . h L i s t D r i v e r . cpp
ListADT . o : ListADT . cpp L i s t I n t e r f a c e . h Node . h Node . cpp
Node . o : Node . h Node . cpp
################################################################
#Ru le s Used t o G en er ate e x e c u t a b l e from o b j e c t DO NOT EDIT
$ (EXEC) : $ (OBJS)
$ (LD) $ (LDFLAGS) o $@ $? $ ( LIBS )
#Rule to g e n e r a t e o b j e c t c ode from cpp s o u r c e f i l e s DO NOT EDIT
. cpp . o :
$ (C++) $ (CFLAGS) c $<
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 11 of 12
Project-3
F15 CSCI 232 - DSA Santa’s Lists
Assigned: 2015-10-14
Due: 2015-10-26 by midnight
#Rule to g e n e r a t e h ea de r and so u r c e f i l e s from Dia UML Diagram DO NOT EDIT
. d ia . h :
$ (DIA) t cpp $<
. d ia . cpp :
$ (DIA) t cpp $<
################################################################
#Rule to Clean up ( i . e . delete ) a l l o f th e o b j e c t and ex e c uab l e
#code f i l e s t o f o r c e make t o r e b u i l d a c l e a r n e x e c u t a b l e o nl y
#from th e s o u r ce f i l e s
c l e a n :
rm f $ (OBJS) $ (EXEC)
#Rule to submit programming as s ig n me nt s to g r a d e r s
#Make s ure you modify the $ ( sub j ) $ ( msg) above and the l i s t of attachment
#f i l e s in the f o l l o w i n g r u l e each f i l e needs to be prec ee ded with an
#a f l a g as shown
sub j = CSCI232 DSA Pr oj3 ”
msg = ” P leas e r ev iew and g rade my Pro jec t 3 Submission
submit : PLACE YOUR SOURCE CODE FILES HERE
$ ( t a r ) $ (USER)p r o j 3 . t g z $ ?
echo $ ( msg ) |$ ( mail ) s $ ( s ub j ) a $ (USER)p r o j 3 . t g z $ ( add r )
p r i n t : PLACE YOUR SOURCE CODE FILES HERE
$ ( a2ps ) $?
Philip J. Curtiss, Assistant Professor
Computer Science Department, Montana Tech
Page 12 of 12
Page 1 of 12 - Instructions
Page 2 of 12 - Instructions
Page 3 of 12 - Instructions
Page 4 of 12 - Instructions
Page 5 of 12 - Instructions
Page 6 of 12 - Instructions
Page 7 of 12 - Instructions
Page 8 of 12 - Instructions
Page 9 of 12 - Instructions
Page 10 of 12 - Instructions
Page 11 of 12 - Instructions
Page 12 of 12 - Instructions

Navigation menu