0
if (sale->taxStatus[i] = "y")  // line 44

エラーが発生します:

y.cpp:44:12: error: request for member taxStatus in sale, which is of non-class type Sale*

私の構造体:

struct Sale {
    int quantity[MAX_SALES];
    float unitPrice[MAX_SALES];
    char taxStatus[MAX_SALES]; // MAX_SALES = 10
};

完全な機能:

void total(struct Sale sale[], int sales) {

    int i = 0;
    float subTotal, hst, total = 0;

    for (i = 0; i < sales; i++) {
        subTotal = subTotal + (sale->quantity[i] * sale->unitPrice[i]);
        if (sale->taxStatus[i] = "y")
        {
            hst = hst + ((sale->quantity[i] * sale->unitPrice[i]) * 0.13);
        }
    }

    cout << "\n" << "Subtotal  : " << subTotal << endl;   
    cout << "HST (13%) : " << hst;   
}
4

2 に答える 2

4
if (sale->taxStatus[i] == 'y')

@jweyrich と @AustinPhillips も指摘したように、二重等号 ( == ) が必要であり、文字は単一引用符で比較されます。

単一の等号 ( = ) を使用して値を割り当てます。

例えばs = 5;

二重等号 ( == ) は、2 つ以上の値が等しいかどうかをチェックするために使用されます。

例えばif( s == d && d== e && e == f && f == b ) { };

感嘆符付きの等号 ( != ) は、2 つ以上の値が等しくないことを確認するために使用されます。

例えばif( s != d && d != e && e != f && f != b ) { };

于 2013-01-21T02:55:38.737 に答える
0

まず第一に、すでに述べたようif (sale->taxStatus[i] = "y")に、比較ではなく代入です!

しかし、主な問題は次のとおりです: sale(関数パラメーター) は配列 (サイズ) ですが、(本体sales内で) としてアクセスします...forSale*

正しいアクセスはsale[i]->taxStatus、 indexiが array の内部を指しているためである必要がありますが、 !saleではありません。taxStatus(ところで、sales > MAX_SALESUBを取得する場合)。次に、リテラルstrcmpと比較するために使用する必要があります..."y"

于 2013-01-21T03:00:48.323 に答える