ページ 1 / 1
友人からの問題
Posted: 2012年2月21日(火) 14:58
by CDR
はじめましてプログラム初心者のCDRと言います
プログラム暦は2ヶ月でまだまだ未熟です
先日友人からクラスの基本問題が出されて、調べたり考えたりしたのですが
どうしても解くことが出来ずにタイムリミットが過ぎてしまいした
その後、友人から分からないのならこちらに質問するといいと言われ来ました
その問題というのが
次のような基本クラスと派生クラス(クラス階層)を作成
1:飛行機の情報を格納するクラス階層を作成
まずairshipという基本クラスを作成
airshipクラスには搭乗可能人数と積載貨物可能量を格納(単位はポンド)
また搭乗可能人数と積載貨物可能量を表示するメンバ関数を作成
2:次にairshipからairplaneとballoonという2つの派生クラスを作成
airplaneクラスには推進機構の種類(プロペラまたはジェット)と
航続距離(単位はマイル)を格納
balloonクラスには気球を浮上させる為に使用する気体(水素またはヘリウム)と
最大高度(単位はフィート)を格納
3:main関数でこのクラス階層を使うプログラムを作成
*airshipとballoonのオブジェクトを作成して、その設定内容を表示する
これを参考にソースプログラムを作るというのですが
僕の知識が乏しいのか1の初めで躓いてしまいます、皆様どうかお力添えをお願いいたします
Re: 友人からの問題
Posted: 2012年2月21日(火) 15:19
by softya(ソフト屋)
マルチポストですので相互リンクをお願いします。 詳細はフォーラムルールを →
http://dixq.net/board/board.html
「友人からの問題 プログラム言語です | OKWave」
http://okwave.jp/qa/q7318230.html
で、相互リンクした上で回答させて頂きますが、答えを書いても意味を理解しないと意味がないと思いますので、まず1の何が理解出来ないか明確にして下さい。
[追記]
(1)まずairshipという基本クラスを作成
(2)airshipクラスには搭乗可能人数と積載貨物可能量を格納(単位はポンド)
(3)また搭乗可能人数と積載貨物可能量を表示するメンバ関数を作成
()付きの番号で分からない所を説明して下さい。
Re: 友人からの問題
Posted: 2012年2月21日(火) 15:24
by CDR
お返事ありがとうございます
1の何が理解出来ないのかと言いますと
1:飛行機の情報を格納するクラス階層を作成
まずairshipという基本クラスを作成
ここまでは自力で出来ますがその後の格納で躓いています
説明不足で申し訳ありません
Re: 友人からの問題
Posted: 2012年2月21日(火) 15:41
by softya(ソフト屋)
回答の前提条件である相互リンクを行なって下さい。 フォーラムルール違反となります。
okwaveなら補足を使って、こちらの掲示板でも同じ質問をしていることを説明してもらうことで完了します。
Re: 友人からの問題
Posted: 2012年2月21日(火) 15:54
by CDR
補足させていただきました
方法は合っていますでしょうか?
ご迷惑をおかけします
Re: 友人からの問題
Posted: 2012年2月21日(火) 15:58
by softya(ソフト屋)
とりあえず説明に成っていると思いますので、OKです。
で、まずクラスを分かるところまで書いてみて下さい。
掲載する場合は、codeタグを使ってくださいね。
http://dixq.net/board/board.html#k10
Re: 友人からの問題
Posted: 2012年2月21日(火) 16:25
by たかぎ
課題の丸投げの一種なので、まずは少しボケてみましょう。
コード:
#include <iostream>
constexpr long long pounds(double x)
{
return static_cast<long long>(x * 1000);
}
constexpr long long miles(double x)
{
return static_cast<long long>(x * 1000);
}
constexpr long long feet(double x)
{
return static_cast<long long>(x * 1000);
}
enum 推進機構
{
プロペラ, ジェット
};
inline std::ostream& operator<<(std::ostream& os, 推進機構 type)
{
return os << (type == プロペラ ? "プロペラ" : "ジェット");
}
enum 気体
{
水素, ヘリウム
};
inline std::ostream& operator<<(std::ostream& os, 気体 gas)
{
return os << (gas == 水素 ? "水素" : "ヘリウム");
}
template <int 搭乗可能人数, long long 積載貨物可能量>
struct airship
{
std::ostream& spec(std::ostream& os) const
{
os << "搭乗可能人数 = " << 搭乗可能人数 << " 名\n";
os << "積載貨物可能量 = " << 積載貨物可能量 / 1000.0 << " lb\n";
}
};
template <int 搭乗可能人数, long long 積載貨物可能量, 推進機構 機構, long long 航続距離>
struct airplane : airship<搭乗可能人数, 積載貨物可能量>
{
std::ostream& spec(std::ostream& os) const
{
airship<搭乗可能人数, 積載貨物可能量>::spec(os);
os << "推進機構 = " << 機構 << '\n';
os << "航続距離 = " << 航続距離 / 1000.0 << " mi\n";
}
};
template <int 搭乗可能人数, long long 積載貨物可能量, 気体 ガス, long long 最大高度>
struct balloon : airship<搭乗可能人数, 積載貨物可能量>
{
std::ostream& spec(std::ostream& os) const
{
airship<搭乗可能人数, 積載貨物可能量>::spec(os);
os << "気体 = " << ガス << '\n';
os << "最大高度 = " << 最大高度 / 1000.0 << " ft\n";
}
};
int main()
{
airplane<2, pounds(2000.0), ジェット, miles(1234.5)> a;
balloon<1, pounds(10), ヘリウム, feet(123456.7)> b;
std::cout << "airplane:\n";
a.spec(std::cout);
std::cout << std::endl;
std::cout << "baloon:\n";
b.spec(std::cout);
std::cout << std::endl;
}
Re: 友人からの問題
Posted: 2012年2月21日(火) 16:28
by zz