【解決方法】プロジェクトの支援が必要 – C++ の学習

プログラミングQA


私はC++プログラミングを学んでいる初心者です。
House.cpp と Room.cpp を含むプロジェクトがあります。

Room.ccp >> room.h から情報を取得 >> 以下はスニペットです。

#include "Room.h"
#include <sstream>

Room::Room( RoomType type, int width, int breadth, int height )
{
	mType = type;
	mWidth = width;
	mBreadth = breadth;
	mHeight = height;
}

Room::Room()
{
	mType = BATHROOM;
	mWidth = 0;
	mBreadth = 0;
	mHeight = 0;
}

string Room::getDescription() const
{
	stringstream theStream;
	theStream
		<< getRoomName() << ": "
		<< "width=" << mWidth
		<< " breadth=" << mBreadth
		<< " height=" << mHeight
		<< "    " << getSquareFootage() << " Total Square Footage"
    << "    " << getVolume() << " Total Volume\n\n";
	return theStream.str();
}

House.cpp >> house.h から情報を取得 >> 以下は私の問題の抜粋です

#include <sstream>
#include "House.h"

using namespace std;

House::House()
{
	//stub
}

int House::getNumBedrooms()
{
  
	//stub
	return 0;
} 

部屋の総数を見つけようとしています。

欠けていたもの:
Room.cpp プログラム全体を配置します。

Room.h も House.h も、変更する必要のないプロジェクトに応じて含めませんでした。

申し訳ありませんが、オンラインで質問を投稿するのはこれが初めてで、常にすべてのファイルを含める必要があるかどうか誰かがアドバイスできるでしょうか? ありがとう。

ハウスクラスは次のとおりです。

class House
{
public:
	//constructor
	House();
	//destructor
	~House(){};

	bool addRoom( const Room& theRoom );
	int getNumBedrooms();
	int getNumBathrooms();
	int getNumKitchens();
	int getNumLivingrooms();

	int getTotalSquareFootage();//sum of the area of all rooms
	int getTotalVolume();//sum of the volume of all rooms
	//can this house be occupied - must have minimum number of rooms by type
	bool isValid();
	string enumerateRooms();//create a string with the descriptions of all the rooms in the house

	string getDescription();

私が試したこと:

int House::getNumBedrooms()
{
  int numbed;
  Room r;
  numbed = r.getSquareFootage();
	//stub
	return numbed;
}

これは、ファイルにないファンキーな数値を返します。

HouseDriver.txt は Main から呼び出されます。 main は正しく、プロジェクトごとに変更する必要はありません。 house.cpp を変更する必要があります

This is HouseDriver.txt  Col1 (Type of Room 0-kitchen, 1-bathroom, 2-Living Room, 3-bedroom), Col2 (Width), Col3 (Length), Col4 (Height)
0 10 10 7
1 5 6 7
3 15 8 7
2 20 10 10
0 12 7 8
1 10 10 6
1 11 12 7
1 4 5 8
2 10 13 9
3 11 13 8
3 12 15 8
1 12 23 12

解決策 1

これを行う場合、各部屋の説明を のインスタンスに読み込みます。 Room 物体。 それから私はそれらのコレクションを持っています Room のメンバーとしてのオブジェクト House 物体。 このために、私はおそらく std::vector コレクションの部屋数を取得する House 私は size の方法 Room ベクター。

を呼び出す方法がわかりません getSquareFootage の方法 Room オブジェクトは部屋数を返すことが期待されます。

ETA: ハウス データをプログラムに保存した方法を確認できないため、質問に対する正確な回答を提供することは事実上不可能です。

解決策 2

HouseDriver.txt は Main から呼び出されます。
文はほとんど意味がありません。 メインに読み込まれる HouseDriver.txt というファイルがあるのでしょうか?
数字は何を意味し、クラスハウスや部屋にどのように分布していますか? 概念的には、クラスには、関連するすべてのデータとそれにアクセスするためのメソッドが含まれている必要があります。

ここでは、メソッド getNumBedrooms() を実装する方法について説明します。
家に複数の部屋が必要であると仮定した場合、1 つの方法で単一の部屋を作成することはほとんど意味がありません。 次のようには機能しません。

C++
int House::getNumBedrooms()
{
  int numbed;
  Room r;
  numbed = r.getSquareFootage();
	//stub
	return numbed;
}

ここまでは、House クラスが次のようになっていることだけを説明しました。

C++
class House
{
public:
	int getNumBedrooms() {};
};

家には部屋が含まれていると考えられます。 彼らはどこにいますか?

ここでは、House クラスにある、部屋を含むベクターなどの std コンテナーを使用することをお勧めします。 もちろん、家を部屋で満たす方法が必要です。 全体として、次のアプローチが可能です。

C++
class House
{
public:
	int getNumBedrooms();
	int insertroom(class Room& room);
private:
	vector<class Room> roomlst;
};

もう 1 つ: getNumBedrooms() メソッドはおそらく寝室の数を取得することになっているため、部屋にもこの情報が含まれている必要があります。

コメント

タイトルとURLをコピーしました