クラスを使ったプログラミング

[戻る]
とも [E-Mail] 2002/11/22(金) 17:11:04
今アメリカでC++をとっているのですが、その宿題のプログラミングで非常にいきづまって困っ
ています。課題は「クラスを使って時計を作る」
1.データメンバーは時間、分。秒
2.デフォルトコンストラクターと、上記データメンバーのための引数をもつコンストラクター
3.分と秒にデフォルトのバリュー0をわりあてて、時計をセットするファンクション
4.ひとつのArgumentをもつ時間表示のためのファンクション。
5.1秒ずつ植えるファンクション
これらをヘッダーファイルと実行ファイル(implementation)に作るとのことなのですが、上記4と5
の処理の仕方がいまいちアイディアがわきません。とりあえず、ヘッダーファイルに
#if !defined(CLOCK_H)
#define CLOCK_H

class Clock{
    int Hour;
    int Minute;
    int Second;
public:
    Clock();
    Clock(int h, int m, int s);
    void Set(int h, int m=0, int s=0);
    int GetHour(void);
    int GetSec(void);
};
#endif

実行ファイルに
#include<iostream.h>
#include "Clock.h"

Clock::Clock(){      //Default constructor
    Hour=0;
    Minute=0;
    Second=0;
}

Clock::Clock(int h, int m, int s){   //Constructor that receive values
    Hour=h;
    Minute=m;
    Second=s;
}

void Clock::Set(int h, int m, int s){
    Hour=h;
    Minute=m;
    Second=s;
}

int Clock::GetHour(void){
    return Hour;
}

int Clock::GetSec(void){
    return Second;
}

とも [E-Mail] 2002/11/22(金) 17:16:21
(続き)
というふうに、書いたのですがこの先どのようにすればいいのかわかりません。特に上記4のひ
とつの引数というのが、このファンクションに一体どんな引数をもってくればいいのかまったく
わからず先にすすめません。5についてもいまいちイメージがわきません。どなたかいいアイディ
アがあれば教えていただけませんでしょうか?

PAI 2002/11/22(金) 17:44:12
まず、『課題なら自分でやれ』といいたいところですが、
なんと言うか、ここまで潔くきかれてしまうと気持ちいいものもあり、
更に、悪いのは課題のほうだろ、とも思われたりするので。


とりあえず、5、は自分で考えてください。そんなに難しくはないはずです。
秒をすすめたらどうなるか考えそのとおりにするだけです。

で、4、ですが、
時間表示関数ということですが、
何処にどう表示すればよいかといった指定はないのでしょうか?
引数はその指定等に使用するのではないでしょうか?

そのひとつの引数の型とか指定はないんでしょうか?
引数をとればなんでもいいのであれば、とりあえず受けといて使用しないとか。

// こういった課題ってその講義をとっている人たちの間にしかない暗黙の前提が多くて、
// 外部の人にはまったくわからなかったりするものですが。
// 出題者側のほうがわかってなかったりすることもありますよね。
// 
// ストリームの参照を取ってそこに流す、とか自分ならするところですが、
// ここでストリームを使ってもいいのか、とか。

ユーカリ [E-Mail] 2002/11/29(金) 10:24:46
もしかして課題のタイムリミットは過ぎちゃったかな?

4については、あなたのコメントから察するに
「特に制約なし。ただし時間表示に便利であること。」と解釈します。
そうなると、私なら「文字列で返してもらえれば便利だなぁ」と思うので、
CStringか、それが禁じ手ならchar型の配列と、sprintf系の関数を使って
"hh:mm:ss"のようなフォーマットの文字列を返したいところです。

5については「植える」は「増える」の間違いですよね?
だとすると「普通に時計を1秒進める」ってことですよね?
秒と分は60進数、時は24進数ということを踏まえたうえで
桁あふれ時の繰り上がり処理を書けばいいと思います。

とも [E-Mail] 2002/11/29(金) 11:43:30
[[解決]]
みなさんのご意見を参考にしつつ作成し、完成。提出してきました。いろいろアドバイスありが
とうございました。
PAIさんへ
課題をここで質問してはいけないとは知りませんでした。

tib 2002/11/29(金) 18:34:09
「課題を質問すること」がいけないのではなくて、「自分はのうのうと遊び呆けていたい
から、学校の課題は人にやらせて結果を丸ごとコピーすりゃいいじゃん、という態度」が
嫌われるのです。

とも [E-Mail] 2002/11/30(土) 12:55:10
はっきりいっておきますが、わたしは全部自分で考えて、その上でわからない部分だけ質問しま
した。何も知らないあなたにとやかく言われる筋合いはありませんし、tibさんに教えてもら
ったわけではないので、あなたがそんなことを言う権利は一切ありません。

とも [E-Mail] 2002/11/30(土) 13:03:32
それからこの件はもうすでに解決済みにチェックをいれてあります。解決した件ですので、どう
ぞ他の方の相談にのってあげてください。

tib 2002/11/30(土) 13:06:02
あくまで一般論として、課題をこういうところで訊いてくる人にはそういう傾向があると
いう事を述べているに過ぎません。

あなたの態度を個別に批判したわけではないので「何も知らないあなたにとやかく...」
だの「あなたがそんなことを言う権利は一切ありません」などと言われる筋合いはありま
せん。

επιστημη 2002/11/30(土) 14:52:21
なに怒ってんだろ。宿題をこんなとこで見ず知らず
の誰ともわからんひとに教えてもらおうということ
自体非常識じゃないの。問題丸投げかどうかにかかわらず。

ユーカリ [E-Mail] 2002/12/04(水) 07:55:48
「この先どうしたらいいのかわからない」のに、
一体全体どうしろというのでしょう。

宿題は自分でやらなきゃいけない。コレ当然。
しかし彼は「かわりにやってくれ」とは一言も
言ってない。ヒントが欲しかっただけだろう?
それがなぜ批判されるのか、私には
その理由がまったく理解できない。

古いスレッドには追加発言できません。