1

割り当て:menu.txtからメニュー情報を読み取るC++プログラムを作成します。アイテムコードの最初の文字は、前菜(A)、プリモピアット(E)、デザート(D)、または飲料(S)のいずれであるかを示します。

A1 Bruschetta 5.29
A2 Caprese_Flatbread 6.10
A3 Artichoke-Spinach_Dip 3.99
A4 Lasagna_Fritta 4.99
A5 Mozzarella_Fonduta 5.99
E1 Lasagna_Classico 6.99
E2 Capellini_Pomodoro 7.99
E3 Eggplant_Parmigiana 8.99
E4 Fettuccine_Alfredo 7.49
E5 Tour_of_Italy 14.99
D1 Tiramisu 2.99
D2 Zeppoli 2.49
D3 Dolcini 3.49
S1 Soda 1.99
S2 Bella_Limonata 0.99
S3 Berry_Acqua_Fresca 2.88

次に、ユーザーに注文の入力を求めます。注文ごとに、合計金額を計算して出力する必要があります。アイテムは、各行に任意の順序でリストできます。

A1 E1 D1 S1 S2 D3 E4 A4 E3 E5 A2 A4 S2 S1 D2 D2 E2 X

ユーザーが「X」を入力すると、プログラムは最も人気のある前菜、プリモピアット、デザート、飲み物を出力する必要があります。同点の場合は、いずれか1つを出力できます。

私が抱えている問題は、入力(たとえば、A1)を取得してから、配列内の適切な項目と場所について配列を解析することです(たとえば、A1はtest2 [1]であり、E1はtest2[5]であることが望ましいです。 )。アレイが正しく設定されていることはわかっています。私が配列を検索するために使用しようとしているのは:

for(int l = 0; l<SIZE; l++)
{   //I get an operator error every time here       
    if(s == (test2[l]))
    {   //Just a test to see if I am pulling 
        //any information                   
        cout << test2[l].getCode() << endl;
    }           
}   

テストはMenuItemtest2[SIZE]としてインスタンス化されました。

上記の方法を使用しようとすると、常にエラーが発生します

's == test2 [l]'</p>の'operator=='に一致しません

以下は私のMenuItem.hです:

#ifndef MENUITEM_H
#define MENUITEM_H
#include <iostream>
#include <string>

using namespace std;

class MenuItem
{
private:
string code;
string name;
double price;

public:
MenuItem(string mcode = "", string mname = "", double mprice = 0);
~MenuItem();
string getCode() const { return code; }
string getName() const { return name; }
double getPrice() const { return price; }

void setCode(string mcode){ code = mcode; }
void setName(string mname){ name = mname; }
void setPrice(double mprice)  { price = mprice; }
};
#endif

ヘルプと入力をありがとう。

心から、

ジェイソン

4

2 に答える 2

1

MenuItem型のオブジェクトを比較している場合は、==演算子を正確に実装していません。

C++での演算子のオーバーロードについてはこちらをご覧ください。

http://courses.cms.caltech.edu/cs11/material/cpp/donnie/cpp-ops.html

于 2012-06-27T21:40:18.720 に答える
1

次のコードの変数sのタイプは何ですか?

if(s == (test2[l]))

sはユーザーの入力を含む文字列です。「A1」?または、はMenuItemオブジェクトですか?

文字列の場合、条件は単純に次のようになります。

if(s == test[l].getCode())

sがMenuItemオブジェクトの場合、MenuItemオブジェクトにoperator==を実装する必要があります

署名は次のようになります。

bool operator== (const MenuItem&, const MenuItem&);

実装には、2つのMenuItemオブジェクトのコード、名前、価格が同じかどうかを確認することが含まれます。

于 2012-06-28T01:27:03.770 に答える