2017-09-12 11 views
0

私は給与チェックのコードを書いています。関数は、作業時間と時間単位の支払いをユーザーに要求します。別の関数は、時間とレートを引数として受け取り、グロスペイを計算して返します。次に、payrolltax(.22)を計算して返す関数にgrosspayを送ります。引数としてグロスペイと税金を受け取り、netpayを返す関数を呼び出します。最後に、すべての値(合計時間、時間単位、グロスペイ、税金、およびネットペイ)を表示する関数にすべてのデータを送信します。私のネットペイが私に0を表示し、税金が間違った答えを表示しています。誰かが私がどこに間違って行ったのか教えていただけますかなぜ私のネットペイは答えを表示しないのですか?

/* Payroll Check */ 
#include <stdio.h> 

float askhoursworked(); 
float askhourlyrate(); 
float calculategrosspay(float hours,float rate); 
float calculatepayrolltax(float grosspay); 
float calculatenetpay(float grosspay,float tax); 
float displayallvalues(float ,float ,float,float ,float); 

int main() 
{ 
     float hours; 
     float rate; 
     float grosspay; 
     float tax; 
     float netpay; 
     float values; 

     hours=askhoursworked(); 
     rate= askhourlyrate(); 

     tax= calculatepayrolltax(grosspay); 
     netpay= calculatenetpay(grosspay,tax); 
     grosspay=calculategrosspay(hours, rate); 

     values= displayallvalues(hours, rate, tax, grosspay, netpay); 

     return 0; 
} 


float askhoursworked() 
{ 
     float hours; 
     printf("\n Please enter hours worked \t"); 
     scanf("%f",&hours); 

     return hours; 
} 

float askhourlyrate() 
{ 
    float rate; 
    printf("\n Please enter your payrate \t"); 
    scanf("%f",&rate); 

    return rate; 
} 

float calculategrosspay(float hours,float rate) 
{ 
    float grosspay; 
    grosspay=hours*rate; 

    return grosspay; 
} 

float calculatenetpay(float grosspay,float tax) 
{ 
    float netpay; 
    netpay=grosspay-tax; 

    return netpay; 
} 

float calculatepayrolltax(float grosspay) 
{ 
    float tax; 
    tax=grosspay*.22; 

    return tax; 
} 

float displayallvalues(float hours,float rate,float tax,float grosspay,float netpay) 
{ 
    printf("\n Your total hours are %.2f",hours); 
    printf("\n Your hourly rate %.2f",rate); 
    printf("\n Your grosspay is %.2f",grosspay); 
    printf("\n Your taxes are %.2f",hours); 
    printf("\n Your netpay is %.2f",netpay); 
} 
+0

フォーマットが悪いです - コードを簡単に読み取ることができません。(あなたは問題が何であるかを伝える答えを受け取った後 –

+0

は、バグを修正するようにコードを変更しないでくださいあなたは 'displayallvalues(と主張 –

+0

注意を。 ) 'は値を返しますが、それはありません。存在しない結果が割り当てられている変数は決して使用しませんが、代入がエラーであることを防ぎません。 'askhoursworked()'関数は同様に 'float askhoursworked(void)'と 'askhourlyrate()'で宣言されるべきです(そして、好ましくは定義されていなければなりません)。これらの関数の宣言ですが、プロトタイプはありません(CはC++ではなく、ルールが異なります)。 –

答えて

1

シングルパスコンパイラを使用してください。つまり、ここでは注文が最も重要です。 最後にグロスペイを計算しています。あなたはそれをネットペイと税金の計算に使用しています。ここで

正しい方法..です

hours = askhoursworked(); 
rate = askhourlyrate(); 
grosspay = calculategrosspay (hours, rate); 
tax = calculatepayrolltax (grosspay); 
netpay = calculatenetpay (grosspay, tax); 

あなたは間違った方法で、あなたの出力をも印刷されている​​

EDIT でそれを確認してください。

printf ("\n Your total hours are %.2f", hours); 
    printf ("\n Your hourly rate %.2f", rate); 
    printf ("\n Your grosspay is %.2f", grosspay); 
    printf ("\n Your taxes are %.2f", tax); 
    printf ("\n Your netpay is %.2f", netpay); 
+0

それを私の視点に入れてくれてありがとう、自分のコードを変更しました。私の税金が私の総時間と同じ金額になっている理由についてもう一つ質問してください。 – michaelj

+0

[michaelj](https://stackoverflow.com/users/8595298/michaelj)、私は私の答えを編集した、私はあなたもそれを忘れてしまったと思います。上記の私の更新答えを確認してください。 –

関連する問題