掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.29628

時間を求めるプログラム
投稿者---tomo(2007/01/29 00:17:56)


始めまして。

時間を求めるプログラムで
最長で120分のテープがあり、現在地の時間を引いて、残りの時間を求めるのです。
自分なりに作ってみて、分までは求められたのですが秒がどうしても求められません。。。

どなたか、お力をお貸しいただければ嬉しいです。

以下プログラムです。

#include <stdio.h>

void main(void)
{
    int syoki=7200,h=0,m=0,s=0;
    int dh,dm,ds;

    scanf("%d",&dh);
    scanf("%d",&dm);
    scanf("%d",&ds);

    if (dh==2){
        h=0;
        m=0;
        s=0;
    }
    else if(dh==1){

        if(dm!=0||ds!=0){
            h=0;
            m=(syoki-3600-(dm*60)-ds)/60;
            s=syoki-3600-(m*60)-ds;

        }
        else if(dm==0&&ds==0){
        h=1;
        m=0;
        s=0;
        }

    }


    printf("%d:%d:%d",h,m,s);

}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:時間を求めるプログラム 29629 επιστημη 2007/01/29 00:42:24
<子記事> Re:時間を求めるプログラム 29630 円零 2007/01/29 12:03:47


No.29629

Re:時間を求めるプログラム
投稿者---επιστημη(2007/01/29 00:42:24)
http://blogs.wankuma.com/episteme/


難しく考えてんじゃないかしら。

残り秒数: 7200 - (時*3600+分*60+秒) を求め、
そいつを時分秒で表示するのが楽じゃない?



この投稿にコメントする

削除パスワード

No.29632

Re:時間を求めるプログラム
投稿者---tomo(2007/01/29 12:51:06)


ありがとうございます。

自分なりに考えて完成させることができました。


難しく考えすぎでした 汗


この投稿にコメントする

削除パスワード

No.29630

Re:時間を求めるプログラム
投稿者---円零(2007/01/29 12:03:47)


>m=(syoki-3600-(dm*60)-ds)/60;

このmが表しているのは、「残り時間の『分』の部分」ではなく、
「残り時間全体を『分』で表したもの」です。
ここでは h==0 であるために一致してはいますが…
従って、
>s=syoki-3600-(m*60)-ds;

これは、(m*60) は (dm*60) の間違いではないかと思いますが、そこを修正しても
「残り時間全体を『秒』で表したもの」が出るだけです。
「残り時間の『秒』の部分」を出したいのであれば、
s = syoki - 3600 - (dm * 60) - ds - h * 3600 - m * 60;

としなければなりません。
dh == 1 に限らないように一般化すると、
h = (syoki - dh * 3600 - dm * 60 - ds) / 3600;
m = (syoki - dh * 3600 - dm * 60 - ds) / 60 - h * 60;
s = (syoki - dh * 3600 - dm * 60 - ds) - h * 3600 - m * 60;

こうしてみると、 (syoki - dh * 3600 - dm * 60 - ds) を三回計算することになります。
ということは、これを一旦何らかの変数(仮にxとします)に収めて、
x = (syoki - dh * 3600 - dm * 60 - ds);
h = x / 3600;
m = x / 60 - h * 60;
s = x - h * 3600 - m * 60;

とできます。さらには、剰余演算子を用いれば
x = (syoki - dh * 3600 - dm * 60 - ds);
s = x % 60;
m = (x /= 60) % 60;
h = (x /= 60);

のようにも書くことができますね。


この投稿にコメントする

削除パスワード

No.29633

Re:時間を求めるプログラム
投稿者---tomo(2007/01/29 12:53:45)


ありがとうございます。

せっかく教えていただいたのに見たときには完成していました。。汗
申し訳ないです。。

でも、拝見してとても参考になりましたので
今後に向けても参考にさせていただきます。

また、何かある際にはよろしくお願いします。

ありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧