home *** CD-ROM | disk | FTP | other *** search
- // %PARAMETERS = "CH15LIST C:\UT2004"
- //Identifies the package
- //CH15_03LIST.uc
-
- class CH15_03LIST extends Commandlet;
-
- function int Main(string Args){
-
- //#Setting up a stack as a shuttle schedule
- //#1 Define a passenger list
- const iSHUTTLEMAX = 8;
- local int iLength, iCtr, iShuttle, iPassengers;
-
-
- local Array<string> rgPassengers;
- local Array<string> rgShuttlePassengers;
- local string szPassengers;
- local string szShuttlePassenger;
- iShuttle = 0;
- iCtr = 0;
- iPassengers = 0;
- szPassengers = "Ali Mo Stu Ed Ira Abe Todd Ham " $
- "Si Lil Min Lo Dli Regi Cal Hal " $
- "Su Len Joy Jay Xi Chi Tan Nu";
-
- Split(szPassengers, " ", rgPassengers);
-
- Log (Chr(10) $" Number of passengers: " $ rgPassengers.Length $ Chr(10));
-
- // #2
- iLength = rgPassengers.Length/iSHUTTLEMAX;
- while(iLength > 0){
-
- //The count for shuttle passengers controls block
- while(iCtr < iSHUTTLEMAX){
- // #3
- //grow the shuttle array by one element
- rgShuttlePassengers.Insert(iCtr, 1);
-
- //Assign passenger to last position in shuttle array
- rgShuttlePassengers[iCtr] = rgPassengers[0];
-
- //Remove the passenger from waiting list
- rgPassengers.Remove(0,1);
-
- //Check the length of the waiting list
- iPassengers = rgPassengers.Length;
- iCtr++;
- }//end inner block
-
- //Increase shuttle count with each group of 8
- iShuttle+= 1;
-
- //Decrement the number of shuttles now needed
- iLength--;
-
- // #4
- Log(" Board passengers for shuttle " $ iShuttle);
- iCtr = 0;
- //Show who is to board
- //Make a list -- analogous to "popping" a stack
- while(iCtr <iSHUTTLEMAX)
- {
- //Obtain the first element
- szShuttlePassenger @= rgShuttlePassengers[0];
- //Delete the first element
- rgShuttlePassengers.Remove(0,1);
- iCtr++;
- }
- //Display the list
- Log(" " $ szShuttlePassenger $ Chr(10) );
- //Account for remaining waiting passengers
- Log(" Passengers remaining: " $ iPassengers $ Chr(10));
-
- //Reset counter and display
- iCtr = 0;
- szShuttlePassenger = "";
- }//end outer block
- return 0;
- }