友人からの問題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
CDR

友人からの問題

#1

投稿記事 by CDR » 13年前

はじめましてプログラム初心者のCDRと言います
プログラム暦は2ヶ月でまだまだ未熟です

先日友人からクラスの基本問題が出されて、調べたり考えたりしたのですが
どうしても解くことが出来ずにタイムリミットが過ぎてしまいした
その後、友人から分からないのならこちらに質問するといいと言われ来ました
その問題というのが

次のような基本クラスと派生クラス(クラス階層)を作成
1:飛行機の情報を格納するクラス階層を作成
  まずairshipという基本クラスを作成
  airshipクラスには搭乗可能人数と積載貨物可能量を格納(単位はポンド)
  また搭乗可能人数と積載貨物可能量を表示するメンバ関数を作成

2:次にairshipからairplaneとballoonという2つの派生クラスを作成
  airplaneクラスには推進機構の種類(プロペラまたはジェット)と
  航続距離(単位はマイル)を格納
  balloonクラスには気球を浮上させる為に使用する気体(水素またはヘリウム)と
  最大高度(単位はフィート)を格納

3:main関数でこのクラス階層を使うプログラムを作成
  *airshipとballoonのオブジェクトを作成して、その設定内容を表示する

これを参考にソースプログラムを作るというのですが
僕の知識が乏しいのか1の初めで躓いてしまいます、皆様どうかお力添えをお願いいたします

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 友人からの問題

#2

投稿記事 by softya(ソフト屋) » 13年前

マルチポストですので相互リンクをお願いします。 詳細はフォーラムルールを → http://dixq.net/board/board.html
「友人からの問題 プログラム言語です | OKWave」
http://okwave.jp/qa/q7318230.html

で、相互リンクした上で回答させて頂きますが、答えを書いても意味を理解しないと意味がないと思いますので、まず1の何が理解出来ないか明確にして下さい。

[追記]
(1)まずairshipという基本クラスを作成
(2)airshipクラスには搭乗可能人数と積載貨物可能量を格納(単位はポンド)
(3)また搭乗可能人数と積載貨物可能量を表示するメンバ関数を作成
()付きの番号で分からない所を説明して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

CDR

Re: 友人からの問題

#3

投稿記事 by CDR » 13年前

お返事ありがとうございます

1の何が理解出来ないのかと言いますと
1:飛行機の情報を格納するクラス階層を作成
  まずairshipという基本クラスを作成
ここまでは自力で出来ますがその後の格納で躓いています

説明不足で申し訳ありません

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 友人からの問題

#4

投稿記事 by softya(ソフト屋) » 13年前

回答の前提条件である相互リンクを行なって下さい。 フォーラムルール違反となります。
okwaveなら補足を使って、こちらの掲示板でも同じ質問をしていることを説明してもらうことで完了します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

CDR

Re: 友人からの問題

#5

投稿記事 by CDR » 13年前

補足させていただきました
方法は合っていますでしょうか?
ご迷惑をおかけします

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 友人からの問題

#6

投稿記事 by softya(ソフト屋) » 13年前

とりあえず説明に成っていると思いますので、OKです。

で、まずクラスを分かるところまで書いてみて下さい。
掲載する場合は、codeタグを使ってくださいね。 http://dixq.net/board/board.html#k10
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: 友人からの問題

#7

投稿記事 by たかぎ » 13年前

課題の丸投げの一種なので、まずは少しボケてみましょう。

コード:

#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;
}


閉鎖

“C言語何でも質問掲示板” へ戻る