たすけてください!
たすけてください!
学校の課題で出たんですが、全くサッパリわかりません…
~問題~
キーボードから元金、返済回数(月数)、利率(年利)を入力し、元金均等払いの1回から指定回数までの支払額、利息、残高を以下のように表示せよ。
元金?100000
回数?10
利率(%)?3
回数 支払額 利息 残高
1 10250 250 90000
2 10225 225 80000
3 10200 200 70000
4 10175 175 60000
5 10150 150 50000
6 10125 125 40000
7 10100 100 30000
8 10075 75 20000
9 10050 50 10000
10 10025 25 0
合計 101375 1375
~問題~
キーボードから元金、返済回数(月数)、利率(年利)を入力し、元金均等払いの1回から指定回数までの支払額、利息、残高を以下のように表示せよ。
元金?100000
回数?10
利率(%)?3
回数 支払額 利息 残高
1 10250 250 90000
2 10225 225 80000
3 10200 200 70000
4 10175 175 60000
5 10150 150 50000
6 10125 125 40000
7 10100 100 30000
8 10075 75 20000
9 10050 50 10000
10 10025 25 0
合計 101375 1375
Re:たすけてください!
> キーボードから元金、返済回数(月数)、利率(年利)を入力し
キーボードから入力するための一般的な方法はありません。
そもそも、対象としたハードウェアにキーボードが存在することは期待してもよいのでしょうか?
入力には、I/Oポートを直接制御するのでしょうか?
あるいは、(あるのかないのか、あったとしても何か知りませんが)OSの助けを借りられるのでしょうか?
キーボードから入力するための一般的な方法はありません。
そもそも、対象としたハードウェアにキーボードが存在することは期待してもよいのでしょうか?
入力には、I/Oポートを直接制御するのでしょうか?
あるいは、(あるのかないのか、あったとしても何か知りませんが)OSの助けを借りられるのでしょうか?
Re:たすけてください!
もうひとつついでに...
> 以下のように表示せよ。
表示するための一般的な方法はありません。
対象としているハードウェアには、表示デバイスが存在することを期待してもよいのでしょうか?
表示には、VRAMに直接書きこむとか、LCDのセグメントを直接制御するとか、その他、I/Oを直接制御する必要があるのでしょうか?
あるいは、(あるのかないのか、あったとしても何か知りませんが)OSの助けを借りられるのでしょうか?
> 以下のように表示せよ。
表示するための一般的な方法はありません。
対象としているハードウェアには、表示デバイスが存在することを期待してもよいのでしょうか?
表示には、VRAMに直接書きこむとか、LCDのセグメントを直接制御するとか、その他、I/Oを直接制御する必要があるのでしょうか?
あるいは、(あるのかないのか、あったとしても何か知りませんが)OSの助けを借りられるのでしょうか?
Re:たすけてください!
前のスレに
#include <stdio.h>
#include <math.h>
int main(void)
{
int gankin, kaisuu, pay, pri_bal, total = 0, odd, i;
double riritsu;
scanf("%d %d %lf", &gankin, &kaisuu, &riritsu);
printf("\n元金 %d, 回数 %d, 利率 %.3f\n\n", gankin, kaisuu, riritsu);
riritsu /= 12;
odd = gankin % kaisuu;
pri_bal = gankin;
puts("回数 支払額 利息 残高");
for(i = 1; i <= kaisuu; i ++){
pay = (int)floor(gankin / kaisuu + pri_bal * riritsu + (odd > 0) + 0.5);
printf("%4d %10d %5d %10d\n",
i,
pay,
(int)floor(pri_bal * riritsu + 0.5),
pri_bal - gankin / kaisuu - (odd > 0));
total += pay;
pri_bal -= gankin / kaisuu + (odd -- > 0);
}
printf("\n合計 %d\n", total);
return 0;
}
というのがあり、参考にさせていただいたのですが、
これだと3%の利率を入力した場合3ではなく0.03と入力しなければならず、
また入力する際の元金?回数?利率(%)?という文字が出ません。
この2点を変えるにはどうすればいいですか?
#include <stdio.h>
#include <math.h>
int main(void)
{
int gankin, kaisuu, pay, pri_bal, total = 0, odd, i;
double riritsu;
scanf("%d %d %lf", &gankin, &kaisuu, &riritsu);
printf("\n元金 %d, 回数 %d, 利率 %.3f\n\n", gankin, kaisuu, riritsu);
riritsu /= 12;
odd = gankin % kaisuu;
pri_bal = gankin;
puts("回数 支払額 利息 残高");
for(i = 1; i <= kaisuu; i ++){
pay = (int)floor(gankin / kaisuu + pri_bal * riritsu + (odd > 0) + 0.5);
printf("%4d %10d %5d %10d\n",
i,
pay,
(int)floor(pri_bal * riritsu + 0.5),
pri_bal - gankin / kaisuu - (odd > 0));
total += pay;
pri_bal -= gankin / kaisuu + (odd -- > 0);
}
printf("\n合計 %d\n", total);
return 0;
}
というのがあり、参考にさせていただいたのですが、
これだと3%の利率を入力した場合3ではなく0.03と入力しなければならず、
また入力する際の元金?回数?利率(%)?という文字が出ません。
この2点を変えるにはどうすればいいですか?
Re:たすけてください!
お助けしたいのですが、今の質問内容では詳しいことが分からず回答が困難です。
「規約と注意事項」にある「よくわからない人はテンプレを」にあるテンプレートを使って詳細を教えてください。そうすればスムーズに回答を行えますので。
http://dixq.net/board/board.html
それと規約の「宿題の質問はOK!でも丸投げは×」に該当すると思いますので、勉強方法のアドバイスをすると言うことでよろしいですか?
[flash 600,100]http://dixq.net/flash/kiyaku4.swf[/flash]
たかぎさんが聞いているのは、コンソールで動くのか、それともまったく別の入出力なのかと言うことです。ERK。さんが一般的に使っているキーボードからの入力と表示を方法を例を挙げて説明してください。
「規約と注意事項」にある「よくわからない人はテンプレを」にあるテンプレートを使って詳細を教えてください。そうすればスムーズに回答を行えますので。
http://dixq.net/board/board.html
それと規約の「宿題の質問はOK!でも丸投げは×」に該当すると思いますので、勉強方法のアドバイスをすると言うことでよろしいですか?
[flash 600,100]http://dixq.net/flash/kiyaku4.swf[/flash]
たかぎさんが聞いているのは、コンソールで動くのか、それともまったく別の入出力なのかと言うことです。ERK。さんが一般的に使っているキーボードからの入力と表示を方法を例を挙げて説明してください。
Re:たすけてください!
規約も守らず、回答も読んでいただけないようですので、一応これだけ貼っておきます。
[flash 600,100]http://dixq.net/flash/kiyaku4.swf[/flash]
[flash 600,100]http://dixq.net/flash/kiyaku4.swf[/flash]
Re:たすけてください!
>>これだと3%の利率を入力した場合3ではなく0.03と入力しなければならず
上記のソースではdouble型という浮動小数型変数で入力を受け付けていますから、いったんint型などの整数型の変数で入力を受け付けておいて、キャストしてやればいいかと思います。
>>入力する際の元金?回数?利率(%)?という文字が出ません。
これは表示してから入力を受け付ければOKです。
上記のソースではdouble型という浮動小数型変数で入力を受け付けていますから、いったんint型などの整数型の変数で入力を受け付けておいて、キャストしてやればいいかと思います。
int a = 0; double b = 0.0; scanf("%d", a); b = (double)a;こんな感じでしょうか?
>>入力する際の元金?回数?利率(%)?という文字が出ません。
これは表示してから入力を受け付ければOKです。
Re:たすけてください!
softyaさんとかぶったので、こちらも貼っておきます。
回答者様用テンプレート
● 対 宿題の丸投げ用 ●
・ 自分はどこまで理解しているのか、学校ではどこまで習ったのか明確にしましょう
・ 自分で書いたソースプログラムがあるなら提示しましょう
・ (提示してある場合)自分が書いたソースプログラムはどこからどこまでなのか教えて下さい
・ ソースコードは< pre>と< /pre>のタグで囲んでください
詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html
回答者様用テンプレート
● 対 宿題の丸投げ用 ●
・ 自分はどこまで理解しているのか、学校ではどこまで習ったのか明確にしましょう
・ 自分で書いたソースプログラムがあるなら提示しましょう
・ (提示してある場合)自分が書いたソースプログラムはどこからどこまでなのか教えて下さい
・ ソースコードは< pre>と< /pre>のタグで囲んでください
詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html
Re:たすけてください!
失礼、前述のコードに修正です…
int a = 0;
double b = 0.0;
scanf("%d", a);
b = (double)(a) / 100.0;
int a = 0;
double b = 0.0;
scanf("%d", a);
b = (double)(a) / 100.0;
Re:たすけてください!
現在規約遵守推進期間(無期限)となっております(笑)
printf("元金 ");
scanf("%d", &gankin);
のようにすれば入力時に項目の表示ができると思いますよ。
利率もint型の変数で入力して、必要なときにfloatなどに代入してやればいいだけでは?
printf("元金 ");
scanf("%d", &gankin);
のようにすれば入力時に項目の表示ができると思いますよ。
利率もint型の変数で入力して、必要なときにfloatなどに代入してやればいいだけでは?
Re:たすけてください!
2.5%とかの金利はないのでしょうか?
通貨単位が円とは書かれていませんので、例えば米ドルであれば100分の1まで計算対象にする必要があります。
また、お金の計算に浮動小数点数を使うべきではないのは基本ですね。
通貨単位が円とは書かれていませんので、例えば米ドルであれば100分の1まで計算対象にする必要があります。
また、お金の計算に浮動小数点数を使うべきではないのは基本ですね。
Re:たすけてください!
> 最初からdouble型変数に入力値を受けておいて、計算する際に100分の1にして計算するほうがスマートですね。
それだと誤差が出ます。
自分で文字列を解析して、100倍した整数に変換する必要があります。
それだと誤差が出ます。
自分で文字列を解析して、100倍した整数に変換する必要があります。
Re:たすけてください!
>>たかぎさん
そうですね。
金融業界ならBCDとかCOBOLで言うところのPACKED-DECIMALが基本ですよね。
浮動小数点は誤差が付きまといますので使うのは危険ですね。
C言語の標準規格に無いのが問題ですが(^^ゞ
そうですね。
金融業界ならBCDとかCOBOLで言うところのPACKED-DECIMALが基本ですよね。
浮動小数点は誤差が付きまといますので使うのは危険ですね。
C言語の標準規格に無いのが問題ですが(^^ゞ
Re:たすけてください!
100倍した整数を使う場合、int型を使うと、(処理系不明なので)327.67までしか表現できません。
これでは(円の場合)子供の小遣いにも満たない金額です。韓国ウォンなら...
long型を使っても、約2147万程度しか表現できませんので、円であれば住宅ローンの計算を行うことすらできなくなります。
long long型を使えば、国債の計算でもできるかと思います。
ただし、処理系不明なのでlong long型が使えるかどうかわかりません。
多倍長演算を視野に入れる必要があるかもしれませんね。
これでは(円の場合)子供の小遣いにも満たない金額です。韓国ウォンなら...
long型を使っても、約2147万程度しか表現できませんので、円であれば住宅ローンの計算を行うことすらできなくなります。
long long型を使えば、国債の計算でもできるかと思います。
ただし、処理系不明なのでlong long型が使えるかどうかわかりません。
多倍長演算を視野に入れる必要があるかもしれませんね。
Re:たすけてください!
>やそさん
思わず笑いましたw
>ERKさん
最近、説明不足でどう答えていいかわからない投稿が多く、
回答者の皆さんでどうしたらいいですかねって話していたところだったんですね。
質問して頂くとき、質問者さんが何に困ってて、何で作ってて、質問者さんのスキルがどれ位なのかが解らないと
答えようが無い場合が多いんです。
どう答えていいか解らない時は一度規約を読んで頂ければと思います。
さて、最初の質問としては、文字の表示の仕方が解らないということでしょうか?
Cの基本はわかっていらっしゃいますか?
hello world
と画面に表示させるプログラムならかけますか?
思わず笑いましたw
>ERKさん
最近、説明不足でどう答えていいかわからない投稿が多く、
回答者の皆さんでどうしたらいいですかねって話していたところだったんですね。
質問して頂くとき、質問者さんが何に困ってて、何で作ってて、質問者さんのスキルがどれ位なのかが解らないと
答えようが無い場合が多いんです。
どう答えていいか解らない時は一度規約を読んで頂ければと思います。
さて、最初の質問としては、文字の表示の仕方が解らないということでしょうか?
Cの基本はわかっていらっしゃいますか?
hello world
と画面に表示させるプログラムならかけますか?