No.4ベストアンサー
- 回答日時:
No.2です。
一応手順を示しておきます。
秒数 = C
とするとき、
C / 3600 = h時間を求められます。
(3600秒は1時間)
C / 3600 の余りが残りの秒数です。
C - (C / 3600) * 3600 差を求めることで余りを出します。
あとは、この秒数を分と秒に分けます。
s = C - (C / 3600) * 3600 とすると
s / 60 = m分が求められます。
(1分は60秒)
s / 60 の余りが変換後の秒数部分なので、差を求めて余りを得ます。
s - (s / 60) * 60 = 秒数部分の、s秒です。
入力数値 C が、3725(秒)だったとします。
※データが整数型なので割り算はすべて切捨て整数になります。
3725 / 3600 = 1時間
余りが秒なので
3725 - (3725 / 3600) * 3600 = 3725 - 1 * 3600 = 125
つまり、1時間125秒です。
さらに、125秒を分・秒にするので
125 / 60 = 2分
余りが最終的な秒なので
125 - (125 / 60) * 60 = 125 - 2 * 60 = 5
1時間2分5秒となります。
尚、A ÷ B の余りを説明上わかりやすく、
A - (A / B) * B としていますが
C言語ではご存知、A % B でも求められます。
No.6
- 回答日時:
<訂正>
【フローチャートその1】
STRAT(左右が弧である長方形図内に書く)
int n(長方形図内に左の4つを書く)
int h
int m
int s
n 入力(平行四辺形図内に書く)
jiRimbyo(n,[h],[m],[s])(左右二重線の長方形図に書く)
n 出力(長方形図内に左の4つを書く)
h 出力
m 出力
s 出力
END(左右が弧である長方形図内に書く)
【フローチャートその2】
jiRimbyo(左右が弧である長方形図内に書く)
n / 3600 → [h](平行四辺形図内に左3つを書く)
(n MOD 3600) / 60 → [m]
(n MOD 3600) MOD 60 → [s]
return(左右が弧である長方形図内に書く)
※[?]は値のアドレスを示します。
No.5
- 回答日時:
No.4です。
リストとフローチャートを以下に載せますので
参考になさって下さい。
void jiRimbyo(int n,int* h,int* m,int* s)
{
*h = n / 3600;
*m = (n % 3600) / 60;
*s = (n % 3600) % 60;
return;
}
int main(void)
{
int n,h,m,s;
printf("秒数?");
scanf("%d",&C);
jiRimbyo(n);
printf("\n%d=%d時間%d分%d秒\n",n,h,m,s);
return 0;
}
【フローチャートその1】
STRAT(左右が弧である長方形図内に書く)
int n(長方形図内に左の4つを書く)
int h
int m
int s
0→C(平行四辺形図内に書く)
jiRimbyo(n,[h],[m],[s])(左右二重線の長方形図に書く)
n 出力(長方形図内に左の4つを書く)
h 出力
m 出力
s 出力
END(左右が弧である長方形図内に書く)
【フローチャートその2】
jiRimbyo(左右が弧である長方形図内に書く)
n / 3600 → [h](平行四辺形図内に左3つを書く)
(n % 3600) / 60 → [m]
(n % 3600) % 60 → [s]
return(左右が弧である長方形図内に書く)
※[?]は値のアドレスを示します。
No.3
- 回答日時:
>ちなみに、与えられた値を時分秒に変換する部分は関数でお願いします
課題のにおいがプンプンしますね。
本当に大学1年生?
秒を時分秒に直す、なんてのは小学生でもできる問題だと思うのですが。
もっとブレイクダウンして質問しようよ。
・秒を時分秒に変換するアルゴリズムがわからない(小学生の問題だけど)
・数値(秒)を入力してプログラムで受け取る方法がわからない
・計算はできるけれども、表示の方法がわからない
「参考書など」とは、具体的に何を参考にされているのでしょうか?
#1さんの問いかけに対して、
>恥ずかしながら全く分かりません。
と答えるあたり、自分で少しでもなんとかしようという意気込みが全く伝わってこんのですが。
>学校があと少しで春休みになるので、基礎から勉強してみます。
勉強してから質問しましょう。失礼ながら、門前払いレベルです。
ご回答ありがとうございます。
計算は分かりますが、どのように入力していいかが分かりません。
参考書は、学校で買ったC言語ビギナー偏というものと、図書館でかりている本です。
勉強します。
No.2
- 回答日時:
▽まずソースから。
#include <stdio.h>
int main(void)
{
int C,h,m,s; ・・・ 1
printf("秒数?"); ・・・ 2
scanf("%d",&C); ・・・ 3
if (C <= 0){ ・・・ 4
printf("有効な値ではありません\n");
return 0;
}
s - = (m = (s = (C - (h = C / 3600) * 3600)) / 60) * 60; ・・・ 5
printf("\n%d秒=%d時間%d分%d秒\n",C,h,m,s); ・・・ 6
return 0; ・・・ 7
}
▽【説明】
(1)
C = 入力秒数 / h = 時間 / m = 分 / s = 秒
(2,3,4)
秒数 C を入力して、(C > 0秒)文字列や負数はエラーとする
(5)
s - = (m = (s = (C - (h = C / 3600) * 3600)) / 60) * 60
は以下に展開します。
h = C/3600 ・・・ 時間
s = (C - (h = C / 3600) * 3600)
・・・ 分も秒とした時の総秒数
m = (s = (C - (h = C / 3600) * 3600)) / 60
・・・ 秒から分を抽出
s - = (m = (s = (C - (h = C / 3600) * 3600)) / 60) * 60
・・・ 先程の秒数の差を求めることで残りの秒数桁を算出
こういうことでよろしいのでしょうか…?
ご回答ありがとうございます。せっかく回答していただいたのですが、
C秒単位の数値をコンソールタイプから入力して、その値を時分秒に変換して画面に表示ではなく、秒単位の数値をコンソールタイプから入力して、その値を時分秒に変換して画面に表示の間違いでした。申し訳ありません。大変、お手数お掛けしますがもう一度ご返事いただけますか?
ちなみにフローチャートも提出しないといけないのですが、例だと
START→秒を入力n→関数jiRimbyo(n)→n,時,分,秒の表示→stop
です。この場合のソースを教えていただいたほがありがたいです。
何度も申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- 物理学 物理学の質問です。 地球の重力による加速度を英語の単位で表すと、32fy/s²である。空気摩擦がない 1 2022/09/30 09:13
- Excel(エクセル) Excel 2019で質問があります。 計測器のデータをExcelで記録したんですが、1秒刻みで記録 4 2022/09/07 22:46
- 物理学 なめらかな水平面の床の上に、質量 200 g の物体がある。床の面を xy 面とし、鉛直方向に z 1 2022/07/23 11:28
- Excel(エクセル) Excel について <TIMEVALUE> 3 2022/10/20 15:57
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- IT・エンジニアリング 三菱製PLC Qシリーズで技術的なことをご教示いただければ幸いです。 下記の回路で0.1秒の値をD0 1 2023/02/27 18:44
- C言語・C++・C# gettimeofday() と localtime_r() を使って現在の日時をマイクロ秒単位で表 2 2022/10/26 21:15
- Java コンソールから所属財産を入力(単位:万円 1000~100000以内でIntegerに変換できない場 2 2022/05/31 21:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語
-
C言語での引数の省略方法
-
「指定されたキャストは有効で...
-
C言語 エラーの原因がわからな...
-
【C++】関数ポインタの使い方
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
if と配列の組み合わせ
-
素数 再帰関数
-
数字列を3桁ごとにカンマで区切...
-
read関数をノンブロッキングで...
-
ラップ関数とはどんなものですか?
-
(int *)の意味
-
C言語で分からないところがあり...
-
実数の整数部,小数部の取得
-
int型とfloat型の演算結果
-
単方向リストに適当な値を入れ...
-
16進数の計算の仕方を教えて下さい
-
「{ } で囲むだけ」は正しい?
-
エラー 添字が付けられた値が、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
c++でテンプレートのコードでわ...
-
(int *)の意味
-
ラップ関数とはどんなものですか?
-
数字列を3桁ごとにカンマで区切...
-
c言語のリダイレクトによる円...
-
比較回数と交換回数表示について
-
実数の整数部,小数部の取得
-
if と配列の組み合わせ
-
構造体の勉強中です 合計点の高...
-
PowerShellがうまくいかない
-
c言語の配列を使ってサイコロを...
-
課題でつまってます・・・
-
C言語のサイコロシミュレート
-
エラー 添字が付けられた値が、...
おすすめ情報