• 締切済み

友人からの問題 プログラム言語です

友人から出された問題が未だに解けません 次のような基本クラスと派生クラス(クラス階層)を作成 飛行機の情報を格納するクラス階層を作成 まずairshipという基本クラスを作成 airshipクラスには搭乗可能人数と積載貨物可能量を格納(単位はポンド) また搭乗可能人数と積載貨物可能量を表示するメンバ関数を作成 次にairshipからairplaneとballoonという2つの派生クラスを作成 airplaneクラスには推進機構の種類(プロペラまたはジェット)と 航続距離(単位はマイル)を格納 balloonクラスには気球を浮上させる為に使用する気体(水素またはヘリウム)と 最大高度(単位はフィート)を格納 main関数でこのクラス階層を使うプログラムを作成 *airshipとballoonのオブジェクトを作成して、その設定内容を表示する どなたかこの問題を解いていただけませんか? 数ヶ月頭を悩ませていますが友人は答えを教えてくれないので 今回投稿させていただきました、よろしくお願いしたします

みんなの回答

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.4

「独習C++」に載っている練習問題ですね。 わからなかったら本を買いましょう。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

質問文通りの問題なら、これはクラスを扱う上では「基本中の基本」とも言えるレベルです。 #1でも言われてますが数ヶ月もの間何やってたんでしょうか? #……とその友人も思ってるんじゃないかと。

ikatakowani
質問者

補足

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

ここで回答をもらっても、それが質問者にとって、何の意味があるのですか? 友人の問題は、とても基本的なものだと思います。 数ヶ月もあれば、十分に解けると思いますよ。 まあ、C++以前に、開発ソフトのインストールやツールの使い方が判らないと、先に進めないことありますが、それでも数ヶ月あれば余裕でしょう。

ikatakowani
質問者

補足

http://dixq.net/forum/viewtopic.php?f=3&t=10249 こちらの掲示板でも同じ質問をさせていただいています C言語交流フォーラム様

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その数か月の間にあなたは何をしたのですか? 何をどう考えたのですか? どこで困っているのですか?

関連するQ&A

  • 基本クラスのポインタで、派生クラスのメンバ関数を呼び出す方法?

    VC++でプログラミングをしています。 A(基本クラス) B(派生クラス) を作成しました。Bは、Aの特別な場合です。 このとき、基本クラスAのポインタから、派生クラスBにのみあるメンバ関数を呼ぶことはできないのでしょうか? 基本クラスAにも同じ名前の関数があれば、仮想関数をオーバーロードすれば呼び出せるようですが、この関数は、基本クラスには不要なので、できれば使わないメンバ関数を基本クラスに書きたくありません。 (純粋仮想関数という方法もあるようですが、) 操作としましては、 Aのポインタ配列 A* a[100]を作成し 特別な場合のみ派生クラスBのメンバ関数だけを実行させたいのです。 派生クラスにのみあるメンバ関数を、Readとします。 for(i=0;i<100;i++){ if(派生クラスBの場合){ a[i]->Read() } } 現状では、コンパイルエラーで、 関数Readは、aのメンバ関数ではありませんとなってしまいます。 以上よろしくお願いします。

  • オーバーライド関数の呼び出し元を判定するにはどうしたらよいでしょうか?

    オーバーライド関数の呼び出し元を判定するにはどうしたらよいでしょうか? 基底クラスはCPropertyPageで、そこから複数階層まで継承しています。 末端クラスの関数が呼ばれたとき、それがどの派生クラスから呼ばれたかによって処理を分けたいのですがどうしたら良いでしょうか?

  • 抽象クラスについて

    抽象クラスを使って派生クラスを作成していて疑問になったのですが、派生クラスで作るメンバ関数は、抽象クラスで仮想関数としてすべて定義しておくべきなのでしょうか。ご教授願います。

  • 最大積載量は何で決まる?

    素朴な疑問です。 貨物自動車の最大積載量は何で決まるのでしょうか? 10t車でも、10000kg というキリのいいものもあれば 10150kg という半端なものもありますよね。 また、見ため 4t クラスのドライバンでも 2000kg とか。 1t クラスの量産車でも 750kg~1500kg といろいろあります。 このような事実から、貨物自動車の最大積載量は、 単純な方程式では求められないように思えます。 構造、法規、税制などが上限を決定する判断材料だとは思いますが、 どなたか詳しい方、ご回答をお願いいたします。

  • c言語の関数について

    サービス1 基本料金3,000円 利用時間1時間当たりの追加料金 1,200円 サービス2 基本料金5,000円 利用時間1時間当たりの追加料金 600円 サービス3 基本料金7,000円 利用時間1時間当たりの追加料金 300円 利用時間xを受け取るとサービス1の一ヶ月間の料金を計算するcharge1関数を作成。 さらにサービス2の一ヶ月間の料金を計算するcharge2関数と、サービス3の料金を計算するcharge3関数もそれぞれ作成。 そして3つのサービス各料金を、使用時間1時間の場合から10時間の場合まで1時間単位で計算し、出力するプログラムを関数charge1、charge2、charge3を利用して作成。 関数の作り方がわからないので、例解をお願いします。

  • 継承元のpublicなメンバ関数を隠ぺいしたい

    C++です.(VC++2013) 親クラスではpublicで宣言されているメンバ関数があり,継承後はこのメンバ関数を隠ぺいしたいときはどのようにすればよいのでしょうか. 具体的には,std::vectorから派生したクラスを定義し,この独自クラスのインスタンスへ要素を追加する場合は,新しく独自に定義した関数を通じて行います. そのため,push_back()を呼べないようにしたいのです. 自分で作成した関数には,pushという名前をつけたいので,単純に自分の要素追加の関数をpush_backという名前でオーバーライドすることはできません. push関数内では,push_backした後,即座にsortしたいので,push_backをいう名前をつけたくないのです. とりあえずは,派生クラスでprivateにpush_backをオーバーライドし,自分で作った要素追加の関数で使うpush_backはstd::vectorのものを用いることを明示することでできました. 他にも何かやり方があれば,ご教授下さい.

  • 夏休みの花火の購入量

    今度学級行事(クラス行事)で、花火をするんですが、 クラス単位の大人数でやったことはないので、 どれくらいの量が適しているのかを知りたいです。 30人程度の人が参加する予定ですので、30人と考えてください。 中学生なので少し多めにしないと足りないかもしれませんが。 回答、よろしくお願いします。

  • C言語について教えてください。

    名前、身長、体重をメンバとする構造体オブジェクトを要素とする配列を宣言・定義する。 (1)名前、身長、体重を構造体オブジェクトのメンバに格納する関数 (2)平均身長を計算する関数 (3)平均体重を計算する関数 をそれぞれ定義し、その関数の機能を確認するプログラムを作成する。 構造体オブジェクトの各メンバは以下の値をもつとする。 Name Height(cm) Weight(kg) Tom 174.2 72.3 Jerry 152.3 49.2 Spike 168.6 84.8 ただし、平均身長と平均体重は呼び出し元の関数(関数main())で表示する。 また(2)(3)については、生徒の人数が変更されても処理できる関数を作成する。 [実行結果の例] 平均身長:165.0cm 平均体重: 68.0kg [ヒント] 構造体の配列でまとめられたデータから平均身長あるいは平均体重を計算する関数 <返却値型><関数名>(構造体の配列の受け渡しに対応した仮引数の宣言、生徒の人数) この問題について教えてください。 下のプログラムは自分でつかりかけたプログラムです。 #include <stdio.h> #include <string.h> struct student { char name[6]; double height; double weight; }; struct student set_student(char *n, double h, double w) { struct student ss; strcpy(&ss.name[0], n); ss.height = h; ss.weight = w; return ss; } int main(void) { struct student seito[3]; seito[0] = set_student("Tom", 174.2, 72.3); seito[1] = set_student("Jerry", 152.3, 49.2); seito[2] = set_student("Spike", 168.6, 84.8); return 0; } (2)(3)計算の計算する関数を定義し、表示させる方法がよく分かりません。具体的に教えてもらえませんか。よろしくお願いします。

  • 基本クラスのポインタから、特定の派生クラスのメンバ変数を変更する方法?

    VC++でプログラミングをしています。 A(基本クラス) A1, A2, A3, ...(派生クラス) を作成しました。A1,A2,A3, ...は、Aの派生クラスです。 このとき、基本クラスAのポインタから、特定の派生クラスにのみ存在するメンバ変数m_dataのみ変更したいのですが、存在するかどうかをどのように判定して、値を変更すれば良いでしょうか? できれば、下記のような構造でループできるとありがたいです。 A* a[100] (その後、a[100]に、派生クラスA1,A2,A3,..を割り当て、  それらが、混在しているとします。) for(i=0 ; i<100 ; i++){ if(a[i]->m_dataが存在する場合){ (2)   a[i]->Set_m_data("m_dataの新しい値") (1)  } } (1)は、a[i]->m_data = "m_dataの新しい値" でも良いです。 現状では、m_dataがメンバでない派生クラスがあるので、 (2)のif文の判定自体ができず困っています。 よろしく御願いします。

  • 親クラスのコンストラクタは? 引数付きコンストラクタは?

    VisualBasic.NETです。 あるクラスを継承したクラスからインスタンスを作成したときに、派生クラスのコンストラクタは呼び出されると思うのですが、基本クラスのコンストラクタはどうなるのでしょうか? JAVAのように、super() で呼び出す必要があるのでしょうか? 自動で呼び出されるのでしょうか? それとも、そもそも呼び出せないのでしょうか? また、引数の個数が違うコンストラクタは、同じクラス内に設定できるのでしょうか? JAVAのコードを移植しようと考えているのですが、出来るのかどうかが分からずに悩んでいます。 ご存じの方、よろしくお願いします。

専門家に質問してみよう