ページ 11

ストップウォッチとタイマーについて

Posted: 2008年9月09日(火) 16:06
by Jack
はじめまして、Jackと申します。

最近C言語の学習を始めまして現在課題としてストップウォッチとタイマー作成中なのですが難しく。

御質問なのですがC言語を用いてのコマンドプロクプト上で起動するストップウォッチとタイマーの方を作成使用と思いますが難しくステップ数が500以上とという決まりになります。

内容は起動してキーボードからの入力でストップウォッチかタイマーか選択でき、選択後は
ストップウォッチはカウントしてキーを押すと止まる、再度キーを押すと再度スタートするようなものになります。また違うキーを入力するとリセットしましたり、終了する形になります。

タイマーはキーで選択後、時間を数値入力で入力でき、終わったら”終わりました”などとメッセージが出るように作成したいです。

どなたかご教授いただけないでしょうか、よろしくお願いいたします。

Re:ストップウォッチとタイマーについて

Posted: 2008年9月09日(火) 16:53
by バグ
計測の単位は秒ですか?それともミリ秒ですか?
しかし、ステップ数500も必要なのかなぁ…

それから、自分ではどこまで作ってみました?
出来たところまででいいので、ここに提示してみてください。

もし、何にも分からないというのであれば、JackさんがC言語についてどの程度の理解があるかを知りたいので、どの程度のことを習ったのかを教えてもらえますか?

Re:ストップウォッチとタイマーについて

Posted: 2008年9月09日(火) 16:54
by バグ
あ、それから開発環境も教えてもらえますか?

Re:ストップウォッチとタイマーについて

Posted: 2008年9月09日(火) 17:21
by 管理人
ステップ数って行数だと思っていいんですかね?
500行も要らないと思いますよ・・。
・・と出題者じゃない方に文句言っても仕方ないですけど、
無駄な処理をダラダラ書いて、「ハイ500行書きました」なんて無意味すぎますよね。
例えば
printf("お");
printf("わ");
printf("り");
printf("ま");
printf("し");
printf("た");
と書けば、普段の6倍の行数がかけるわけですが・・。

そこで、高機能にしてみたらいいんじゃないでしょうか?
無理に無駄な処理を沢山つけて500行にするよりよほど良いと思います。
それにしても500行って結構長いですよね(汗。

とりあえずストップウォッチとタイマーを作ってみましょう。
ググれば沢山サンプルが出てくると思いますが、そちらはご覧になりましたか?

バグさんの仰るように、どこまでやっているのかなどを教えて下さい。
詳しくは規約に書いてあります。

Re:ストップウォッチとタイマーについて

Posted: 2008年9月09日(火) 17:42
by 管理人
作ってみました。
関数わけしても三十数行でした・・。
500行にする為にはよっぽど色んな機能を付けるか、
とんでもなく無駄な処理を沢山書かないと無理そうです。
500行という部分はちょっと出題者に確認取った方がよくないですか??

私はwindows.hやtime.hのライブラリを使いましたけど、
そういうのは使っていいんでしょうか?

Re:ストップウォッチとタイマーについて

Posted: 2008年9月10日(水) 14:59
by Jack
たくさんのご回答ありがとうございます。すみません情報不足でした。
自分は開発環境はcpadというソフトを使用しております。

500ステップというのは課題内容が説明文なども入れての行数が500行くらいという内容の課題になりましたのでこのような膨大な行数で作成するのは大変な作業になるのではと感じており、スッテプ数も半数の100行ほどでもよいという結果にできました。あとはほかの処理を記載して行を書くしかありません。

計測単位はストップウォッチはミリ秒単位、タイマーは秒単位になります。

自分はここ最近にC言語を学習し始めて文字配列、関数と配列、ファイルの入出力を学習しました。

ここで課題として500行のプログラムを作成するという課題になりました。

作成物を添付いたします。まだタイマーまでしかできていません。
よろしければご教授の方よろしくお願いいたします。

Re:ストップウォッチとタイマーについて

Posted: 2008年9月10日(水) 15:14
by 管理人
コンパイラは何を使っていますか?
使用してよいライブラリなどの制限はありますか?

あと、プログラムが添付されていないようです。

Re:ストップウォッチとタイマーについて

Posted: 2008年9月10日(水) 15:32
by バグ
Windowsかそうでないかでも変わってきそうですね。

>>ストップウォッチはカウントしてキーを押すと止まる、再度キーを押すと再度スタートするようなものになります。また違うキーを入力するとリセットしましたり、終了する形になります。

この辺りの処理は完全に環境に依存しそうですし…

Re:ストップウォッチとタイマーについて

Posted: 2008年9月10日(水) 15:33
by Jack
申し訳ありません、再度添付いたします。
コンパイラのほうは「bcc32.exe」というものを使用しております。
使用してよいライブラリの制限はないです。
まことによろしくお願いいたします。

Re:ストップウォッチとタイマーについて

Posted: 2008年9月10日(水) 15:50
by Mist
タイマーがどうとか言う前にC言語の基本の部分が理解できていないと思います。
(そもそもコンパイルエラーだらけだし^^;)

例えば、

> scanf("%d",&ia);

文字入力をしてもらいたい場合は%dでは無いです。

> if (ia = z);
> }else if (ia = x);

入力された文字をチェックしたいというのはわかりますが、これではだめです。
行の最後が";"で終わっているのも変ですし。

まずは文字入力と入力された文字の判定(ZなのかXなのかそれ以外なのか)から修正されたほうがよいと思います。

Re:ストップウォッチとタイマーについて

Posted: 2008年9月10日(水) 15:50
by 管理人
>まだタイマーまでしかできていません。

という事で、タイマーまでは出来たという解釈でいいんでしょうか。
プログラムはコンパイルを通りませんよね?
まず、きちんとコンパイルが通る形にし、書きかけの部分はコメントアウトにするなどしてみて下さい。

まず、scanfで読み取っているのが%dのint型の値であるのに、文字をいれようとしている部分や、
入力した文字を = z などで比較している部分が違います。

またイコール一つは比較ではなく、代入です。
条件文になっていません。

if文の使い方、scanfの使い方、文字の扱い方など基本的な部分をまずおさらいしてみて下さい。
コンパイルできるコードでもう一度提示して下さい。

Re:ストップウォッチとタイマーについて

Posted: 2008年9月10日(水) 16:05
by Jack
大変申し訳ありませんでした。
すみません、タイマーではなくストップウォッチでありました。
コンパイルエラーを見直し、ストップウォッチの再生と一時停止を繰り返すもののみになります。
if文やscanfの使用法を再度見直させていただきます。

再度添付いたしますので申し訳ありませんが再度ご拝見していただけないでしょうか。
まことによろしくお願いいたします。

Re:ストップウォッチとタイマーについて

Posted: 2008年9月10日(水) 16:24
by Mist
このソースあなたが作ったものですか?
ここまで出来るなら、タイマーのほうがよっぽど簡単だと思うんですけど。

Elapseの戻り値をチェックして、入力された時間を越えれば終わりとするだけです。
(入力が秒の場合はミリ秒に変換して比較しないといけませんが)

Re:ストップウォッチとタイマーについて

Posted: 2008年9月10日(水) 16:34
by レッツ
これはJackさんが作ったコードですか?
もし違うなら何処まで自分が作ったものか示さないとどこからアドバイスして良いのか解らないと思いますよ。