home *** CD-ROM | disk | FTP | other *** search
- *****Listing 3*****
-
-
- // remember: typedef char T ...
- class Yacht : public Sloop {
- public:
- // return current offset of point
- int where()
- {
- int r = lengthb();
- go( r);
- return r;
- }
-
- // go moves point to desired offset. If go fails, it leaves
- // point at end of yacht
- Truth go( int n)
- {
- begin();
- for( ; !isend() && (n >= 0); next() )
- n--;
- return !n;
- }
-
- // get() returns value after point and advances the point
- // pre-condition: !isend()
- T get()
- {
- T r;
- r = geta();
- next();
- return r;
- }
-
- // position point at beginning
- void begin() { while( !isbegin() ) prev(); }
-
- // position point at end
- void end() { while( !isend() ) next(); }
-
- // return number of elements in Yacht
- int length()
- {
- int r = lengthb();
- for( int n = 0; !isend(); next() )
- n++;
- go( r);
- return n;
- }
-
- // print Yacht, from point to end, to standard I/O FILE
- void print( FILE *fp = stdout)
- {
- while( !isend() ) {
- fprintf( fp, "%d\n", geta() );
- next();
- }
- }
- private:
- // lengthb - moves point to beginning and returns
- // previous offset of point
- int lengthb()
- {
- for( int n = 0; !isbegin(); prev() )
- n++;
- return n;
- }
- };
-
-