0

さて、構造体があり、本の量を増やす関数を作成する必要があります。各本の関数を呼び出した後、うまくできるprintBooksを呼び出します。これは非常に単純なプログラムですが、私はできなかったので助けていただければ幸いです

#include <iostream>
using namespace std;

#define BOOKS 3

struct Book
{
    string title;
    string isbn;
    int amount;
} books [BOOKS];

void printBooks(Book b);
void addAmount(Book &book,int amount);


int main()
{
    int i;

    for(int i = 0;i < BOOKS; i++)
    {
        cout << "Enter isbn : ";
        cin >> books[i].isbn;

        cout << "Enter title : ";
        cin >> books[i].title;

        cout << "Enter amount : ";
        cin >> books[i].amount;

    }


    cout << "\nThe number of books after adding amount by one :\n";

    for(i = 0;i < BOOKS; i++)
    {
        addAmount(); // intentionally left blank.don't know what to put
        printBooks(books[i]);
    }

    return 0;
}

void printBooks(Book b)
{
    cout << b.isbn << endl;
    cout << b.title << endl;
    cout << b.amount << endl;
}
void addAmount(Book &book,int amount)
{
    book.amount++;
}
4

2 に答える 2

6

パラメータなしで呼び出していaddAmount();ます。あなたはおそらく意味します

addAmount(books[i], 42);

printBooks署名を次のように変更することも検討してください。

void printBook(const Book& b)

または、さらに良いことに、それをメンバー関数にします。

于 2012-10-16T08:51:47.373 に答える
1
void addAmount(Book &book)
{
    book.amount++;
}

その後

addAmount(books[i]);

ところで、構造体を に値で渡す必要はありませんprintBooks。代わりに const 参照を使用してください。呼び出しコードを変更する必要はありません。

void printBooks(const Book &b)
{
    cout << b.isbn << endl;
    cout << b.title << endl;
    cout << b.amount << endl;
}
于 2012-10-16T08:54:11.290 に答える