- 締切済み
プログラムの問題
【質問】 年始めに年利r[%]でx円を借り入れ、年末にy円ずつ均等に返済するときの毎年の返済状況と、借入金完済時の返済総額sを求めるプログラム作成に関する質問です。なお、借入残高は年ごとの複利計算で行う。 また、借入金x円、毎年の返済金y円、年利r[%]はキーボードから入力するものとし、返済金y円は1年目の利息x * r/100円より大きいものとします。 【ヒント】1年目の年始借入残高zはx円です。 年末にはr[%]の利息が加算されるので、z1' = z1* (1 + r / 100)円となります。 ここでy円を返済するなら、2年目の年始借入残高は z2 = (z1' - y)円で、年末には、z2' = z2 * (1 + r / 100)円となる。 ここでy円を返済して3年目に入る、以下同様にしてx1nがy円以下になるまで繰り返す。z1nがy円以下になったとき、z1n円を返済して借入金完済となります。 【プログラム作成例】 借入金 返済金 年利を入力しなさい==>800000 120000 5.2 年数 = 1 返済金 = 120000 残高 = 721600 返済額 = 120000 年数 = 2 返済金 = 120000 残高 = 639123 返済額 = 240000 年数 = 3 返済金 = 120000 残高 = 552357 返済額 = 360000 年数 = 4 返済金 = 120000 残高 = 461079 返済額 = 480000 年数 = 5 返済金 = 120000 残高 = 365055 返済額 = 600000 年数 = 6 返済金 = 120000 残高 = 264037 返済額 = 720000 年数 = 7 返済金 = 120000 残高 = 157766 返済額 = 840000 年数 = 8 返済金 = 120000 残高 = 45969 返済額 = 960000 年数 = 9 最後の返済金 = 48359 返済総額 = 1008359 上記の解答は下記の通りなのですが、 下記以外の解答方法を教えてはいただけないでしょうか? C言語に詳しい方よろしくお願いいたします。 #include <stdio.h> main() { int n; long x, y, z, s; float r; printf ("借入金 返済金 年利を入力しなさい==>"); scanf ("%ld %ld %f", &x, &y, &r); n = 0; s = 0; z = x; for(; ;) { n++; z = z * (1 + r / 100); /* n年末の借入残高 */ if (z <= y) break; /* 借入残高が返済金以下のとき は繰り返しループを脱出 */ z -= y; /* n年末返済後の借入残高 */ s += y; /* 返済額を積算 */ printf ("年数 = %d 返済金 = %8ld 残金 = %8ld 返済額 = %8ld\n",n, y, z, s); } s += z; /* 最後の返済金を加算 */ printf("年数 = %d 最後の返済金 = %8ld 返済総額 = %10ld\n",n, z, s); return (0); }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Oh-Orange
- ベストアンサー率63% (854/1345)
★ソースは見ていませんが1つ。 >上記の解答は下記の通りなのですが、 >下記以外の解答方法を教えてはいただけないでしょうか? >C言語に詳しい方よろしくお願いいたします。 前も同じような感じの質問でしたよね。 この質問は『質問』というよりは『添削』して欲しいのですか? ・あとコンパイラは持っていますか? もっていないので実行結果を確認できずに正しいのか、あるいはもっと良い方法を 知る上での『下記以外の解答方法』を求めているのでしょうか? ・一通り、コンパイラで EXE ファイルを作成して実行結果が正しければ大幅に 間違っているわけではないと判断して自身を持ってもよいのでは。 どんな理由で『別の解答』を求めているのですか?気になりますね。 ・私も補足要求します。
- tatsu99
- ベストアンサー率52% (391/751)
この回答が模範解答です。 この回答以外の回答は、むしろ覚えない方がよいのではないでしょうか。 むしろ、どうして、この回答以外の方法を知りたいのかということに、非常に興味があります。差し支えなければ、その理由を教えていただけませんでしょうか。 追伸: for(;;){ は while(1){で置き換えられますが、そのような回答を望んでいるわけではないですよね。
- aris-wiz
- ベストアンサー率38% (96/252)
>下記以外の解答方法を教えてはいただけないでしょうか? 前回の質問などで指摘された事を、 自分で全く考えずに丸投げするのは、 良くないと思います。 少なくとも、前回の回答を元に自分なりに どこまでかやってから聞くという気持ちは無いのでしょうか? 少なくとも、そういう気持ちが無ければ、ここでいくら 別の回答をもらったところで、意味がないと思いますが。。。