• ベストアンサー

あともうちょっで完成なのですが・・・

うまく動作しないのですが、以下のプログラムのどこが間違っているのでしょうか? たぶん、メイン関数の宣言の部分だと思うのですが・・・。 #include<stdio.h> typedef struct Time{ int hour; int second; int minute; }Time; int main(void){ Time time1,time2,time3; Time time[3]; int i; for(i=0;i<3;i++){ printf("time%dの時間を入力\n",i+1);   scanf("%d",time[i].hour); printf("time%dの分を入力\n",i+1)   scanf("%d",time[i].minute); printf("time%dの秒を入力\n",i+1); scanf("%d",time[i].second); } time3.second = time1.second + time2.second; if( time3.second >= 60 ){ time3.second=-60; /* time3.second = time3.second - 60; */ time3.minute=1; }else{ time3.minute=0; } time3.minute = time3.minute + time1.minute + time2.minute; if( time3.minute >= 60 ){ time3.minute=-60; /* time3.minute = time3.minute - 60; */ time3.hour=1; }else{ time3.hour=0; } time3.hour= time3.hour+ time1.hour+ time2.hour; return 0; }

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

> 構造体Timeを定義し、この構造体型を持つ変数time1,time2,time3を用意します。この変数time1,time2に時間、分、秒のデータを入力し, その仕様でしたら、構造体の配列 time[3] は不要ですね。 scanf() のところを修正して、time1 と time2 に入力してください。

lilillili
質問者

お礼

やはり、time[3]とtime1,time2,time3の両方を使っていたのがいけなかったようです。 なんとか、解決できそうです。 ありがとうございました。

その他の回答 (2)

回答No.2

1. 入力した値がtime[n]に入っているか確認しましたか? 2. time[n]に入力したのに、計算はtime1,time2,time3を使っているのはなぜですか?

lilillili
質問者

お礼

time[1],time[2],time[3]にそろえて考えてみます。 投稿ありがとうございました。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

「どういう動きをさせたいのだけれど」「実際はどうなってしまうか」を 説明してください。 scanf()で入力した値を後の処理で全く使っていないことが 原因だとは思いますが、ご本人からの説明を待ちます。

lilillili
質問者

補足

scanfで2時間10分13秒と3時間9分24秒の2つの数値を読み取り、それを足し合わせて5時間19分37秒を表示させたいのです。 構造体Timeを定義し、この構造体型を持つ変数time1,time2,time3を用意します。この変数time1,time2に時間、分、秒のデータを入力し, 合計値をtime3の各メンバに代入し、time3に含まれる、時間、分、秒を表示。 (分、秒の表示は0から59の数値で行う) (時間はint hour 分は int minute 秒は int second)