Thread: Functions and Array

  1. #1
    Registered User
    Join Date
    Jul 2009

    Functions and Array

    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;

  2. #2
    Banned ಠ_ಠ's Avatar
    Join Date
    Mar 2009
    Indent your code properly

  3. #3
    Guest Sebastiani's Avatar
    Join Date
    Aug 2001
    Waterloo, Texas
    First of all, indent your code. It looks like you'll just need to define some members that match the initialization list of "library", possibly 3 std::strings (title, author, id(?)) and a boolean (checked_out). As for the functions:

    check_out_book: Set the checked_out member to true
    get_book_by_title: Loop through the array and compare the structure's title member to the string that was passed to the function. If your member is an std::string you can compare with string::operator=, if it's a char array (not recommended) use strncmp. If the comparison is positive, return a pointer to that array element (eg: &library[index]) from within the loop. Otherwise, return NULL at the end of the function.
    print_avail_books: Just loop through the entire array and print each element using std::cout.
    #include <cmath>
    #include <complex>
    bool euler_flip(bool value)
        return std::pow
            std::complex<float>(0, 1) 
            * std::complex<float>(std::atan(1.0)
            *(1 << (value + 2)))
        ).real() < 0;

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. An array of macro functions?
    By someprogr in forum C Programming
    Replies: 6
    Last Post: 01-28-2009, 07:05 PM
  2. help with functions and array please
    By rebel in forum C++ Programming
    Replies: 4
    Last Post: 11-24-2005, 01:09 PM
  3. Quick question about SIGSEGV
    By Cikotic in forum C Programming
    Replies: 30
    Last Post: 07-01-2004, 07:48 PM
  4. Passing pointers between functions
    By heygirls_uk in forum C Programming
    Replies: 5
    Last Post: 01-09-2004, 06:58 PM
  5. Help with an Array
    By omalleys in forum C Programming
    Replies: 1
    Last Post: 07-01-2002, 08:31 AM

Tags for this Thread