
計算を始める値、最終的な結果、計算回数(期間)、の3つから利率を求めたいんですが、、
単利の利率を求める公式から、利率を0.001ずつ減らすループを作れば、誤差0.001以内の値が出るのではないかと思ったんですが、、全く動いてくれなせん、何故でしょうか??
#include<stdio.h>
double main()
{
double x;
double s;
double k;
int counter1;
double a;
double b;
double r;
int counter2;
printf("初期値=?\n");
scanf("%lf",&x);
printf("結果=?\n");
scanf("%lf",&s);
printf("期間=?\n");
scanf("%d",&counter1);
k=((s-x)/(counter1*x));//*単利での利率の公式*//
printf("単利での利率(%%)=%f\n",k*100);
while(counter1==counter2){
b=x;//*bはxを上書きさせない為*//
k=k-0.001;
while(b<=s){
//*複利の計算*//
a=b/100;
r=a*k;
b=b+r;
counter1++;
printf("複利での利率(誤差0.001)=%f\n",k);}
}return 0;}
whileの部分ををforで、
for(b=x;counter1==counter2;k-0.001){
for(counter1=1;b<=s;counter1++){
としても、、コンパイルはできるのですが、、ループ自体をしてくれません、、何故なのでしょうか??C言語以外でもいいですが、、複利の利率は公式とかはあるんでしょうか??
No.4ベストアンサー
- 回答日時:
一応、確認済みです。
コンパイル時に -lm オプションを付けてください。
#include <stdio.h>
#include <math.h>
int main() {
double x,s,k;
int t;
printf("初期値=?\n");
scanf("%lf",&x);
printf("結果=?\n");
scanf("%lf",&s);
printf("期間=?\n");
scanf("%d",&t);
k = exp(log(s/x)/t)-1;
printf("複利での利率=%f\n",k);
}
No.6
- 回答日時:
-l は、コンパイル時に特定のライブラリを使うことを意味します。
URLを参考にして下さい。
参考URL:http://www.kiso.tsukuba.ac.jp/~makimura/text/nod …
環境によってmath.hをインクルードするために必要なんですね!?
なるほど今回math.hでいろいろ便利な関数が沢山ある事が分かったのでよかったです、為になりました、、ありがとうございました。
No.5
- 回答日時:
> -lmオプションとはなんでしょうか??
No.4さんのコードでは、exp(), log()という数学関数を使っています。
ある種の開発環境では、数学関数を使おうとするときには
コンパイル時に -lm オプションが必要です。
chanman_00さんの環境で -lm オプションの指定が必要かどうかは、
どういう開発環境をお使いかによります。
No.1
- 回答日時:
counter2に何も値をセットしていない(つまり、中身がゴミ)状態で
counter1と比較している点に大きな問題があります。
なお、複利の場合の計算式は、
元利合計=元金×(1+利率)^期間
です(^は、べき乗)。
単利の場合の計算式とは全く別です。
すいませんでした、、
whileのところ、、
while(counter1==counter2){
b=x;
k=k-0.001;
while(b<=s){
a=b/100;
r=a*k;
b=b+r;
counter1++;←ではなく、counter2++;でした
forのところ、、
for(b=x;counter1==counter2;k-0.001){
for(counter1=1;b<=s;counter1++){←ではなく
for(counter2=1;b<=s;counter2++){でした、、
それでも同じように動きませんが、、
公式そうだったんですね!!ありがとうございます、、
公式をどのようにあてはめるのか、、まだちょっとわかりませんが、、試行錯誤してみます、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語 関数プロトタイプ宣言の...
-
doubleの変数にintとintの割り...
-
int とdoubleの比較
-
if((double)a >= (double)b))
-
浮動小数点の誤差のあわせ方
-
【C言語】二階微分方程式をル...
-
「割り算」 と 「分数の掛け算」
-
浮動小数点の定数
-
C言語を実行すると-infが出てき...
-
-1.#IND00と出てしまうのですが...
-
fgets()による繰り返し入力(c言語)
-
doubleは常に%lfとするべきなのか
-
(C,C++言語)関数の引数は自動キ...
-
C++で外積
-
プロトタイプ宣言の説明
-
difftime()について
-
最早開始時間と最遅完了時刻を...
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C 開放してるのにエラー(doubl...
-
c言語で、繰り返し文の中で、0....
-
doubleの変数にintとintの割り...
-
至急です! マクロ定義で #defi...
-
C言語 関数プロトタイプ宣言の...
-
浮動小数点の定数
-
DWORDの警告
-
C言語の型による処理速度の違い
-
C言語で台形公式を使った二重積...
-
C言語を実行すると-infが出てき...
-
int とdoubleの比較
-
C言語初心者 構造体 課題について
-
たくさんの数の平均を求める方...
-
EXE1→DLL→EXE2数値を受け渡す方法
-
プログラミングでのテイラー展開
-
C++初心者です。簡単なスコア計...
-
【C言語】二階微分方程式をル...
-
fgets()による繰り返し入力(c言語)
-
2分法で方程式の複数の解を自...
おすすめ情報