2017-10-10 11 views
0

私は申し訳ありませんが、私はちょうど修正するのは簡単ですが、おそらくその方法はわかりません。なぜそれが同じですが、コードでは1つのprintf()しか要求しませんか?

コードでは、1つのprintfしか持っていませんが、端末には同じ質問が2回表示されます。しかし、最終的に正しい結果が得られます。

#include <stdio.h> 
#include <math.h> 

double lfDemanaTaxa(){ 
    double i; 
    double d; 

    printf("Quant es la taxa interes nominal?\n"); 
    scanf("%lf",&i); 
    d = i/100; 

    return d; 
} 
double lfDemanaMensualitat(){ 
    double n; 

    scanf("%lf",&n); 

    return n; 
} 

int main(){ 
    double a,b,c,TAE; 
    a = (1+lfDemanaTaxa()/lfDemanaMensualitat()); 
    b = pow(a,lfDemanaMensualitat()); 
    c = b -1; 
    TAE = c * 100; 
    printf("El TAE total es %.2lf%% \n", TAE); 

    return 0; 
} 

here you can see it questions the same and i put the same number

+4

あなたの出力があなたのプログラムと一致しません。 –

+0

あなたの出力をあなたのプログラムに合わせて修正するときは、**決して**プレーンテキスト出力をグラフィックとして表示しないでください。テキストはアートワークではありません。 – Gerhardh

答えて

7

あなたは2つのプリントアウトを持っているつもりだもちろんので、あなたは二回lfDemanaMensualitat()関数を呼び出し、それがprintf()に1つのコールを行います。

あなたはこのようなものができ

あなたは一度だけ、それを呼び出し、値を格納したい場合は、:その後、

const double t = lfDemanaMensualitat(); 
const double a = (1 + lfDemanaTaxa())/t; 
const double b = pow(a, t); 

とはcを計算し、TAEあなたはすでにやるように。これにより、結果はのtという一時変数に保存されます。

ところで、scanf()は、指定された変換に一致しないものをユーザーが入力した場合に失敗する可能性があることを知っておくべきです。入力に依存する前に、戻り値を確認して成功したことを確認する必要があります。

+0

ありがとうございました –

関連する問題