CS136-Projects/PA03-0921/Project_3.c
cdez d331ebfeaa Modified Homework 3, Excluded Binary Files from GitUpload
++ Homework 3 Project Files
+- GitIgnore Binary Files
2022-09-20 10:49:12 -07:00

190 lines
7.5 KiB
C

// header files
#include "Console_IO_Utility.h"
// global constants
// Minimum Arizona Tax, %
const double MIN_AZ_TAX = 2.59;
// Maximum Arizona Tax, %
const double MAX_AZ_TAX = 4.50;
// Minimum Federal Tax, %
const double MIN_FED_TAX = 10.00;
// Maximum Federal Tax, %
const double MAX_FED_TAX = 37.00;
// SSN Tax, %
const double TAX_SSN = 6.20;
// MC Tax, %
const double TAX_MC = 1.45;
// Percent Conversion, ratio
const double PERCENTAGE_CONVERSION = 0.01;
// printing related constants
const int TWO_ENDLINES = 2;
// constants for table
const int TABLE_WIDTH = 52;
const int DATA_NAME_WIDTH = 20;
const int UNIT_WIDTH = 7;
const int VALUE_WIDTH = 10;
const char TOP_LINE[]
= "====================================================";
const char THICK_LINE_DIVIDER[]
= "|==================================================|";
const char THIN_LINE_DIVIDER[]
= "|--------------------------------------------------|";
const char PIPE_SPACE[] = "| ";
const char SPACE_PIPE[] = " |";
// function prototypes
// none
// main program
int main()
{
// show title
// function: printString, printEndline(s)
printString("Dummy Tax Calculator");
printEndline();
printString(TOP_LINE);
printEndlines(2);
// initialize variables/functions
double totalIncome, contributionToIRA, adjustedIncome;
double minTaxFederal, maxTaxFederal, minTaxArizona, maxTaxArizona;
double taxSSN, taxMC, minTaxTotal, maxTaxTotal;
double maxIncome, minIncome;
double minEffectiveTax, maxEffectiveTax;
// get user input
// section title
printString( "Please provide your information below.\n" );
totalIncome = promptForInteger("Total Income $: ");
contributionToIRA = promptForInteger("Your IRA Contributions $: ");
// conduct computations
// totalIncome is user input
// IRA Contributions are subtracted from totalIncome to get a modified income (adjusted).
adjustedIncome = totalIncome - contributionToIRA;
// Calculate the minimum Federal Tax that would have to be paid, using MIN_FED_TAX * PERCENTAGE_CONVERSION * adjustedIncome
minTaxFederal = MIN_FED_TAX * PERCENTAGE_CONVERSION * adjustedIncome;
// Calculate the maximum Federal Tax that would have to be paid, using MAX_FED_TAX * PERCENTAGE_CONVERSION * adjustedIncome
maxTaxFederal = MAX_FED_TAX * PERCENTAGE_CONVERSION * adjustedIncome;
// Calculate the minimum AZ State Tax that would have to be paid, using MIN_AZ_TAX * PERCENTAGE_CONVERSION * adjustedIncome
minTaxArizona = MIN_AZ_TAX * PERCENTAGE_CONVERSION * adjustedIncome;
// Calculate the maximum AZ State Tax that would have to be paid, using MAX_AZ_TAX * PERCENTAGE_CONVERSION * adjustedIncome
maxTaxArizona = MAX_AZ_TAX * PERCENTAGE_CONVERSION * adjustedIncome;
// Calculate the Social Security Tax that would have to be paid, using TAX_SSN * PERCENTAGE_CONVERSION * adjustedIncome
taxSSN = TAX_SSN * PERCENTAGE_CONVERSION * adjustedIncome;
// Calculate the Medicare Tax that would have to be paid, using TAX_MC * PERCENTAGE_CONVERSION * adjustedIncome
taxMC = TAX_MC * PERCENTAGE_CONVERSION * adjustedIncome;
// Calculate the minimum amount of tax that would have to be paid, using minTaxFederal + minTaxArizona + taxSSN + taxMC
minTaxTotal = minTaxFederal + minTaxArizona + taxSSN + taxMC;
// Calculate the maximum amount of tax that would have to be paid, using maxTaxFederal + maxTaxArizona + taxSSN + taxMC
maxTaxTotal = maxTaxFederal + maxTaxArizona + taxSSN + taxMC;
// Calculate the maximum income after tax has been paid, using totalIncome - minTaxTotal
maxIncome = totalIncome - minTaxTotal;
// Calculate the minimum income after tax has been paid, using totalIncome - maxTaxTotal
minIncome = totalIncome - maxTaxTotal;
// Calculate the minimum tax rate, using minTaxTotal / totalIncome / PERCENTAGE_CONVERSION
minEffectiveTax = (minTaxTotal / totalIncome) / PERCENTAGE_CONVERSION;
// Calculate the maximum tax rate, using maxTaxTotal / totalIncome / PERCENTAGE_CONVERSION
maxEffectiveTax = (maxTaxTotal / totalIncome) / PERCENTAGE_CONVERSION;
// display results
// print top line
// function: printString, printEndline
printEndline();
printString( TOP_LINE );
printEndline();
// print title line
// function: printCharacter, printStringJustified, printEndline
printCharacter( PIPE );
printStringJustified( "DUMMY TAX CALCULATIONS",
TABLE_WIDTH - 2, "CENTER" );
printCharacter( PIPE );
printEndline();
// print thick divider line
// function: printString, printEndline
printString( THICK_LINE_DIVIDER );
printEndline();
// print sub title line
// function: printStringJustified, printString, printCharacter,
// printEndline
printString( PIPE_SPACE );
printStringJustified( "Data Name", DATA_NAME_WIDTH - 1, "LEFT" );
printCharacter( PIPE );
printStringJustified( "Units", UNIT_WIDTH, "CENTER" );
printString( PIPE_SPACE );
printStringJustified( "MIN", VALUE_WIDTH - 2, "CENTER" );
printString( SPACE_PIPE );
printStringJustified( "MAX", VALUE_WIDTH - 1, "CENTER" );
printString( SPACE_PIPE );
printEndline();
// print thin divider line
// function: printString, printEndline
printString( THICK_LINE_DIVIDER );
printEndline();
// print Effective tax rate
// function: printStringJustified, printString, printCharacter,
// printEndline
printString( PIPE_SPACE );
printStringJustified( "Effective Tax Rate ", DATA_NAME_WIDTH - 1, "LEFT" );
printCharacter( PIPE );
printStringJustified( "%", UNIT_WIDTH, "CENTER" );
printCharacter( PIPE );
printDoubleJustified( minEffectiveTax, PRECISION, VALUE_WIDTH -1, "RIGHT" );
printString( SPACE_PIPE );
printDoubleJustified( maxEffectiveTax, PRECISION, VALUE_WIDTH - 1, "RIGHT" );
printString( SPACE_PIPE );
printEndline();
// print thin divider line
// function: printString, printEndline
printString( THIN_LINE_DIVIDER );
printEndline();
// Total tax paid
// function: printStringJustified, printString, printCharacter,
// printEndline
printString( PIPE_SPACE );
printStringJustified( "Tax To Be Paid ", DATA_NAME_WIDTH - 1, "LEFT" );
printCharacter( PIPE );
printStringJustified( "$", UNIT_WIDTH, "CENTER" );
printCharacter( PIPE );
printDoubleJustified( minTaxTotal, PRECISION, VALUE_WIDTH -1, "RIGHT" );
printString( SPACE_PIPE );
printDoubleJustified( maxTaxTotal, PRECISION, VALUE_WIDTH - 1, "RIGHT" );
printString( SPACE_PIPE );
printEndline();
// print thin divider line
// function: printString, printEndline
printString( THIN_LINE_DIVIDER );
printEndline();
printString( PIPE_SPACE );
printStringJustified( "Income After Tax ", DATA_NAME_WIDTH - 1, "LEFT" );
printCharacter( PIPE );
printStringJustified( "$", UNIT_WIDTH, "CENTER" );
printCharacter( PIPE );
printDoubleJustified( minIncome, PRECISION, VALUE_WIDTH -1, "RIGHT" );
printString( SPACE_PIPE );
printDoubleJustified( maxIncome, PRECISION, VALUE_WIDTH - 1, "RIGHT" );
printString( SPACE_PIPE );
printEndline();
// print thick divider line
// function: printString, printEndline
printString( THICK_LINE_DIVIDER );
printEndline();
// end program / return program success
return 0;
}
// supporting functions
// none