Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   unable to understand the error in the following code (http://www.go4expert.com/forums/unable-understand-error-following-code-t24455/)

 bsudhir6 9Jan2011 16:02

unable to understand the error in the following code

Code:

```/* Calculate the tax due or the refund for family based on the following imaginary formula     1. For each dependent deduct \$1,000 from income,     2.Determine tax rte from the following brackets;         bracket            taxable income                tax rate             1                                <=10000                            2%             2                    10001 - 20000                            5%             3                    30001 - 40000                            7%             4                    40001 - 50000                            10%             2                    50001 and up                            15%     then print the amount of tax or the refund            @author:Sudhir     @Date and Time: 1/9/2011 2:16:25 PM */ #include<stdio.h> #define LOWEST    0000000.00 #define HIGHEST 1000000.00 #define LIMIT1 10000.00 #define LIMIT2 20000.00 #define LIMIT3 30000.00 #define LIMIT4 40000.00 #define LIMIT5 50000.00 #define RATE1 02 #define RATE2 05 #define RATE3 07 #define RATE4 10 #define RATE5 15 #define DEDN_PER_DPNDNT 1000 //Function Declarations void getData(double* totalIncome, double* taxPaid, int* numOfDpndnts); void calcTaxes(double totalIncome, double taxPaid, int numOfDpndnts, double* taxableIncome, double* totalTax, double* taxDue); void printInformation(double totalIncome, double taxPaid, int numOfDpndnts, double totalTax, double paidTax,double taxDue); double bracketTax(double income, double startLimit, double stopLimit, int rate); int main(int argc,char *argv[]) {     //Local Declarations     int numOfDpndnts;     double taxDue;     double taxPaid;     double totalIncome;     double taxableIncome;     double totalTax;         //Statements     getData(&totalIncome, &taxPaid, &numOfDpndnts);     calcTaxes(totalIncome, taxPaid, numOfDpndnts, &taxableIncome, &totalTax, &taxDue);     printInformation(totalIncome, taxableIncome, numOfDpndnts, totalTax, taxPaid, taxDue);         return 0; }//main /* ==============================getData()===============================     This function reads tax data from the keyboard.             pre: nothing         post: Reads totalIncome, taxPaid, &numOfDpndnts */ void getData(double* totalIncome, double* taxPaid, int* numOfDpndnts) {     //Statements     printf("Enter your total income for the year: \n");     scanf("%lf", totalIncome);         printf("Enter total of payroll deductions: \n");     scanf("%lf", taxPaid);         printf("Enter the number of dependents: \n");     scanf("%lf", numOfDpndnts);         return; }//getData     /* ==============================calcTaxes()===============================     This function calculates the tax due.             pre: Given-Income, numOfDpndnts         post: Tax Income, total Tax, and tax Due calculated */ void calcTaxes(double totalIncome, double taxPaid, int numOfDpndnts, double* taxableIncome, double* totalTax, double* taxDue) {     //Statements     taxableIncome = totalIncome - (numOfDpndnts * DEDN_PER_DPNDNT);     *totalTax = bracketTax(*taxableIncome, LOWEST, LIMIT1, RATE1) + bracketTax(*taxableIncome, LIMIT1, LIMIT2, RATE2) + bracketTax(*taxableIncome, LIMIT2, LIMIT3, RATE3) + bracketTax(*taxableIncome, LIMIT3, LIMIT4, RATE4) + bracketTax(*taxableIncome, LIMIT4, LIMIT5, RATE5) ;     *taxDue = *totalTax - taxPaid;     return; }//calcTaxes /* ==============================printInformation()===============================     This function prints a table showing all information             pre: The parameter list         post: Prints the table */ void printInformation(double totalIncome, double taxPaid, int numOfDpndnts, double totalTax, double paidTax,double taxDue) {     //Statements     printf("\n Total Income:                                                        %10.2f\n", totalIncome);     printf("\n Number of dependents:                                        %7d\n", numOfDpndnts);     printf("\n Taxable Income:                                                    %10.2f\n", taxPaid);     printf("\n Total Tax                                                                %10.2f\n", totalTax);     printf("\n Tax Already Paid:                                                %10.2f\n", paidTax);     if(taxDue >= 0.0)             printf("Tax due:                                                                %10.2f\n", taxDue);     else         printf("refund:                                                                %10.2f\n", -taxDue);         return; }//printInformation        /* ==============================bracketTax()===============================     This function calculates the tax for particular bracket             pre: The taxable income         post: Return the tax for particular bracket */ double bracketTax(double income, double startLimit, double stopLimit, int rate) {     //Local Declarations     double tax;         //Statements     if(income <= startLimit)         tax = 0.0;     else         if( income > startLimit && income <= stopLimit)             tax = (income > stopLimit) * rate /100.00;         else             tax = (stopLimit - startLimit) * rate / 100.00;     return tax; }// bracketTax```
error in visual c++ compiler is
Code:

```Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86 Copyright (C) Microsoft Corporation.  All rights reserved. Tax.c Tax.c(69) : warning C4996: 'scanf' was declared deprecated         C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(295) : see  declaration of 'scanf'         Message: 'This function or variable may be unsafe. Consider using scanf_ s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help  for details.' Tax.c(72) : warning C4996: 'scanf' was declared deprecated         C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(295) : see  declaration of 'scanf'         Message: 'This function or variable may be unsafe. Consider using scanf_ s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help  for details.' Tax.c(75) : warning C4996: 'scanf' was declared deprecated         C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(295) : see  declaration of 'scanf'         Message: 'This function or variable may be unsafe. Consider using scanf_ s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help  for details.' Tax.c(89) : error C2440: '=' : cannot convert from 'double' to 'double *'```

 jimblumberg 9Jan2011 20:07

Re: unable to understand the error in the following code

For the warning messages you can either use the non-standard function Microsoft recommends scanf_
s in this case or #define _CRT_SECURE_NO_DEPRECATE . Please see this link Security enhancements.

For the error:

Quote:
 Tax.c(89) : error C2440: '=' : cannot convert from 'double' to 'double *'
Code:

```void calcTaxes(double totalIncome, double taxPaid, int numOfDpndnts, double* taxableIncome, double* totalTax, double* taxDue) {     //Statements     taxableIncome = totalIncome - (numOfDpndnts * DEDN_PER_DPNDNT); // Line 89```
Your variable taxableIncome is a pointer to a double and you are trying to assign a double to it. You must add the * in front of taxableIncome.

Also I get a warning on line 75.

Quote:
 main.c|75|warning: format ‘%lf’ expects type ‘double *’, but argument 2 has type ‘int *’|
And line 75 is:
Code:

`  scanf("%lf", numOfDpndnts);`
And numOfDpndnts is an int* not a floating point number. So the format specifier should be "%d".

This warning should also be found by your compiler, but I guess Microsoft is more concerned about "Significant enhancements" that they forget about the real problems.

Jim

 lincy 10Jan2011 12:35

Re: unable to understand the error in the following code

Code:

```#include<stdio.h> #define LOWEST    0000000.00 #define HIGHEST 1000000.00 #define LIMIT1 10000.00 #define LIMIT2 20000.00 #define LIMIT3 30000.00 #define LIMIT4 40000.00 #define LIMIT5 50000.00 #define RATE1 02 #define RATE2 05 #define RATE3 07 #define RATE4 10 #define RATE5 15 #define DEDN_PER_DPNDNT 1000 //Function Declarations void getData(double totalIncome, double taxPaid, int numOfDpndnts); void calcTaxes(double totalIncome, double taxPaid, int numOfDpndnts, double taxableIncome, double totalTax, double taxDue); void printInformation(double totalIncome, double taxPaid, int numOfDpndnts, double totalTax, double paidTax,double taxDue); double bracketTax(double income, double startLimit, double stopLimit, int rate); void main(int argc,char argv[]) {     //Local Declarations     int numOfDpndnts;     double taxDue;     double taxPaid;     double totalIncome;     double taxableIncome;     double totalTax;         //Statements     getData(&totalIncome, &taxPaid, &numOfDpndnts);     calcTaxes(totalIncome, taxPaid, numOfDpndnts, &taxableIncome, &totalTax, &taxDue);     printInformation(totalIncome, taxableIncome, numOfDpndnts, totalTax, taxPaid, taxDue);       }//main /* ==============================getData()===============================     This function reads tax data from the keyboard.             pre: nothing         post: Reads totalIncome, taxPaid, &numOfDpndnts */ void getData(double totalIncome, double taxPaid, int numOfDpndnts) {     //Statements     printf("Enter your total income for the year: \n");     scanf("%lf", totalIncome);         printf("Enter total of payroll deductions: \n");     scanf("%lf", taxPaid);         printf("Enter the number of dependents: \n");     scanf("%lf", numOfDpndnts);         return; } //getData     /* ==============================calcTaxes()===============================     This function calculates the tax due.             pre: Given-Income, numOfDpndnts         post: Tax Income, total Tax, and tax Due calculated */ void calcTaxes(double totalIncome, double taxPaid, int numOfDpndnts, double taxableIncome, double totalTax, double taxDue) {     //Statements     taxableIncome = totalIncome - (numOfDpndnts * DEDN_PER_DPNDNT);     totalTax = bracketTax(taxableIncome, LOWEST, LIMIT1, RATE1) + bracketTax(*taxableIncome, LIMIT1, LIMIT2, RATE2) + bracketTax(taxableIncome, LIMIT2, LIMIT3, RATE3) + bracketTax(taxableIncome, LIMIT3, LIMIT4, RATE4) + bracketTax(taxableIncome, LIMIT4, LIMIT5, RATE5) ;     taxDue = totalTax - taxPaid;     return; }//calcTaxes /* ==============================printInformation()===============================     This function prints a table showing all information             pre: The parameter list         post: Prints the table */ void printInformation(double totalIncome, double taxPaid, int numOfDpndnts, double totalTax, double paidTax,double taxDue) {     //Statements     printf("\n Total Income:%10.2f\n", totalIncome);     printf("\n Number of dependents:%7d\n", numOfDpndnts);     printf("\n Taxable Income:%10.2f\n", taxPaid);     printf("\n Total Tax %10.2f\n", totalTax);     printf("\n Tax Already Paid:%10.2f\n", paidTax);     if(taxDue >= 0.0)             printf("Tax due:%10.2f\n", taxDue);     else         printf("refund:%10.2f\n", -taxDue);         return; }//printInformation        /* ==============================bracketTax()===============================     This function calculates the tax for particular bracket             pre: The taxable income         post: Return the tax for particular bracket */ void double bracketTax(double income, double startLimit, double stopLimit, int rate) {     //Local Declarations     double tax;         //Statements     if(income <= startLimit)         tax = 0.0;     else         if( income > startLimit && income <= stopLimit)             tax = (income > stopLimit) * rate /100.00;         else             tax = (stopLimit - startLimit) * rate / 100.00;     return (0); }// bracketTax```
not sure about program ,just try

 All times are GMT +5.5. The time now is 01:59.