重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

C言語の課題がわからないので教えていただけると嬉しいです
do whileかwhileのどちらかを使って解く問題です
友達が自転車で帰っていきました。30分後に忘れ物に気付き自動車で追いかけました。
自転車の時速24km、自動車の時速60km

この問題を実行結果の
友達は 20 分後に追いつきます

というようにしたいです。
回答よろしくお願いします…

質問者からの補足コメント

  • 実行結果のところ
    友達は、ではなく、私は、でした。

      補足日時:2021/10/09 13:57

A 回答 (5件)

小学校で習う旅人算だけど、その解法自体は


do whileやwhileと関係ないと思う。

単に計算するだけじゃなくて
答えの割り出し方に注文があるのでは?
    • good
    • 0

この事例の場合、do whileかwhileのどちらでもできます。

最初に条件判定するか最後に条件判定するかの違いです。最初から繰り返し条件が偽の場合のみ、動作が異なるものです。
まず自転車のスピードを分単位に変換します。
自動車のスピードを分単位に変換します。
30分後の時間を定義し、0を代入します。
自転車の距離を定義し、「*30」で30分後の距離を代入します。
自動車の距離を定義し、25分後の距離を0とします。
do                //繰り返しの始まり
 30分後の時間++
 自転車の距離+自転車のスピード(分単位)
 自動車の距離+自動車のスピード(分単位)
while(自転車の距離<=自動車の距離)//追いつくまで
30分後の時間を表示

というような感じで作ればいいのではないでしょうか。
    • good
    • 0

> 計算させて成功もしましたが、do whileもwhileも使わなかったのでどうなってるのかよくわからず質問させていただきました。



計算させて成功したの?だったらそれでイイんじゃない?

> do whileもwhileも使わなかった

別に使わなくても「答えが正しかった」のならエエんちゃうの?
っつーか、さっき書いた「計算と出力の違い」に絡むんだけど。
貴方がエクセル使ったり、とか。あるいはワード使ったり、とかして。
中で「do whileやwhileが使われてる」って気にした事ある?
誰もそんなの気にしないのよ。

結局、プログラムって誰も「中身がどう書かれてるか」なんつーのは気にしないのね。
大事なのは「入力した事」に対して「正しい出力」が得られるか否か。
それだけがみんな気にしてる事で、「どう計算されてるのか」なんて誰も気にしないんだ。

結果、どう書こうと貴方が

> 計算させて成功もしました

ならそれで良いのです。「do whileやwhileが」使われてようが使われてまいが、ユーザーには全く関係がない。
だから堂々としてれば良い。

もっとも。

> 計算は普通に数学的に計算させて

ハッキリ言うけど、プログラミング言語って「算数は出来る」けど「数学的に計算出来る」ようには作られていない。
平たく言うと方程式が解けるようには作られてないんだ。
だから、仮にこれが宿題だとして、貴方に教えてる先生が

> 計算は普通に数学的に計算させてその計算結果を実行結果に入れるようにすればいい

なんてことをのたまったとしたらその先生はとんだ大バカ者だ。
もう一回言うけど、プログラミング言語は「方程式を解くように」は作られていない。
結果「普通に数学的に計算」は出来ないの。
だから宿題だとしたら「んな事はC言語じゃ出来ません」ってのが答えになります。
    • good
    • 0

この問題は本来連立方程式で解く問題だと思うのだけどwhile文を使って分毎に両者の位置を計算すると以下のようになると思います



尚、小数点の計算の誤差は考慮していません

#include <stdio.h>

int main(void) {
double bycKpm = 24 / 60.0; // 自転車の分速
double carKpm = 60 / 60.0; // 車の分速
double byc = 30 * bycKpm; // 車が走り出した時の自転車の位置
double car = 0;

int minutes = 0; // 経過時間
while (byc >= car) {
byc += bycKpm;
car += carKpm;
minutes++;
}

printf("%d\n", minutes); // 20
return 0;
}
    • good
    • 0

うーん、マジでプログラミングの事が全く分かってないみたいね。



> この問題を実行結果の
> 私は 20 分後に追いつきます
>
> というようにしたいです。

実行と出力の差をまずは分かっていない。
そして重要な事は

「出力結果はプログラムの中身を規定しない」

んだ。
貴方はそこが全く分かってない。
繰り返すね。
出力例は決してプログラムの中身を決めない、んだ。

仮に貴方の要求を受け入れよう。
プログラムは次のようになる。

/* ここから */
#include <stdio.h>
#include <stdlib.h>

int main(void) {
 puts("私は20分後に追いつきます");
 return EXIT_SUCCESS;
}
/* ここまで */

これで終わりだ。ハッキリ言うけどdo whileもwhileも関係ないし、計算がそもそも必要ない。
だって貴方が言ってるのは単に「私は20分後に追いつきます」と出力してくれ、と言う仕様要求だからだ。計算をどうして欲しいのか、と言う話じゃないからな。

だからこういう問題投稿だと「私は徹頭徹尾プログラミングの事が分かっていません」って言ってる事とおんなじなんだよ・・・。
もっとも、貴方個人のせいじゃなくって、「C言語を教えてる側が」キチンと教えてないんだろう、ってのをここで山ほど見てきてはいるんだけどね・・・・・・。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
計算は普通に数学的に計算させてその計算結果を実行結果に入れるようにすればいいらしいです。
私は%d分後につきます
これの%dのところが20になれば成功です。
計算させて成功もしましたが、do whileもwhileも使わなかったのでどうなってるのかよくわからず質問させていただきました。

お礼日時:2021/10/09 15:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!