Functions and Array

Discussion in 'C++' started by dldsob, Jul 10, 2009.

  1. dldsob

    dldsob New Member

    Jul 3, 2009
    Likes Received:
    Trophy Points:
    Can anyone please help me complete the definition of BOOK STRUCT and implement the three functions in order for the program to work? Thank You.

    #include <iostream>
    using namespace std;
    /* Struct to define a book */
    struct BOOK_STRUCT 
    /*Function Name: check_out_book
    Parameters: A book
    Purpose: Function checks out a book.  Nothing is returned.  
    void check_out_book (BOOK_STRUCT* book)
    /*Function Name: get_book_by_title
    Parameters: A library of books, a title, and the size of the library
    Purpose: Function returns a pointer to a book based on the title supplied
    by the user.  If the book is not found, a null pointer is returned.
    BOOK_STRUCT* get_book_by_title (BOOK_STRUCT library[], char* title, int lib_size)
    /*Function Name: print_avail_books
    Parameters: A library of books and the size of the library
    Purpose: Function goes through the library and prints only those books 
    which are not checked out.
    void print_avail_books (BOOK_STRUCT library[], int lib_size)
    int main()
        char in_title[81];  // buffer to contain input from user
        BOOK_STRUCT* book;  // a book pointer 
        int choice=0;       // used by the menu
        int NUM_BOOKS = 2;  // number of books in the library
        // library data structure
        BOOK_STRUCT library[] = {{"Gods and Generals", "Jeff Shaara", "123", 0},{"Killer Angels",
                                         "Michael Shaara", "143", 0}};
        // Output message to user           
        cout<<"Welcome to Fraser Library"<<endl;
        // Loop until the user selects exit.
           cout<<"Please select from the following options."<<endl;
           cout<<"1. Search for a book."<<endl;
           cout<<"2. Print available books."<<endl;
           cout<<"3. Checkout a book."<<endl;
           cout<<"4. Exit"<<endl;
           cout<<"  > ";
           cin>>choice;   //read input
           if(cin.good() && choice > 0 && choice < 5){  // Make sure choice is correct
             if(choice == 1 || choice == 3){  // selections require title of the book
               cin.ignore();     // need to ignore the character return from the previous cin
               cout<<"Please enter the title of the book."<<endl<<"  > ";
               cin.getline(in_title,81);   //read input from user
               book = get_book_by_title(library, in_title, NUM_BOOKS);  // get book
               if (book == NULL)  // The book is not in the library
                    cout<<endl<<in_title<<" not found.  Please try another title"<<endl<<endl;
               else if (book->checked_out == true) // The book is available but checked out
                    cout<<endl<<"Sorry, "<<book->title<<" is checked out.  Please try another title"<<endl<<endl;
               else if (choice == 1) // The book is available and it will be checked out
                    cout<<endl<<book->title<<" by "<<book->author<<" is available."<<endl<<endl;
               else{  // The book is available
                     cout<<endl<<book->title<<" is available.  I'll check it out for you now."<<endl<<endl;
             else if(choice == 2){ // user wants to print the list of books
                print_avail_books(library, NUM_BOOKS); 
             else{  //user selected exit
               cout<<"Thanks for coming!"<<endl;
               return 0;
           else {   //user provided something we can't understand
              cout<<endl<<"Sorry, I don't understand what you selected.  Please try again"<<endl<<endl;
              choice = 1;  // This just makes sure the user gets a chance make another selection
         while(choice < 4);
        return 0;
    Last edited by a moderator: Jul 11, 2009

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice