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
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 *'
