#include <stdio.h>

double atof();

main(argc, argv)
int argc;
char *argv[];
{
char tmp[200];
double yr_input = 0;
double interest = 0;
double balance = 0;
double int_paid = 0;
double per_intr = 0;
double sum_intr = 0;
double totinput = 0; 
double totintr = 0;
int length = 0;
int nmperiod = 1;
int i = 0;
int j = 0;

if ((argc == 2) && ((argv[1][0] == 'p') || (argv[1][0] == 'P')))
	{
	 fprintf(stdout,"Enter yearly investment <$>...................... ");
	 fgets(tmp,100,stdin);
	 yr_input = atof(tmp);
	 fprintf(stdout,"Enter interest rate <%%>.......................... ");
	 fgets(tmp,100,stdin);
	 interest = atof(tmp) / 100;
	 fprintf(stdout,"Enter length of investment <years>............... ");
	 fgets(tmp,100,stdin);
	 length = atoi(tmp);
	 fprintf(stdout,"Enter opening balance............................ ");
	 fgets(tmp,100,stdin);
	 balance = atof(tmp);
	 fprintf(stdout,"Enter number of compounding periods <per year>... ");
	 fgets(tmp,100,stdin);
	 nmperiod = atoi(tmp);
	 fprintf(stdout,"\n");
	}
else if ((argc == 2) && ((argv[1][0] == 'v') || (argv[1][0] == 'V')))
	{
	 fprintf(stdout,"ira2: Version 1.00 \n");
	 fprintf(stdout,"      Copyright 1987 by Michael Brochstein\n");
	 fprintf(stdout,"      All rights reserved.\n");
	}
else if ((argc != 5) && (argc != 6))
	{
	 fprintf(stderr,"Usage: ira2 p \n");
	 fprintf(stderr,"       ira2 v \n");
	 fprintf(stderr,"       ira2 <yearly investment> <interest rate> ");
	 fprintf(stderr,"<length of investment (years)>\n");
	 fprintf(stderr,"            <opening balance>\n");
	 fprintf(stderr,"       ira2 <yearly investment> <interest rate> ");
	 fprintf(stderr,"<length of investment (years)>\n");
	 fprintf(stderr,"            <opening balance> <compounding ");
	 fprintf(stderr,"periods per year>\n");
	}
else if ((argc == 5) || (argc == 6))
	{
	 yr_input = atof(argv[1]);
	 interest = atof(argv[2]) / 100;
	 length = atoi(argv[3]);
	 balance = atof(argv[4]);
	 if (argc == 6)
		{
	 	 nmperiod = atoi(argv[5]);
		}
	}

if ((argc == 5) || (argc == 6) 
	|| ((argc == 2) && ((argv[1][0] == 'p') || (argv[1][0] == 'P'))))
	{
	 if (nmperiod <= 0)
		{
		 fprintf(stderr,"ira2: Number of compounding ");
		 fprintf(stderr,"periods must be >= 1; using 1\n\n");
		 nmperiod = 1;
		}
	 if (balance < 0)
		{
		 fprintf(stderr,"ira2: Opening balance ");
		 fprintf(stderr,"must be >= 0; using 0\n\n");
		 balance = 0;
		}
	 per_intr = (1.0 / nmperiod) * interest;

	 for (i = 1; i <= length; ++i)
		{
		 totinput = totinput + yr_input;
		 int_paid = 0;
		 sum_intr = 0;
		 balance = balance + yr_input;
		 for (j = 1; j <= nmperiod; ++j)
			{
			 int_paid = (per_intr * balance);
			 sum_intr = sum_intr + int_paid;
			 balance = int_paid + balance;
			}
		 totintr = totintr + sum_intr;
		}
	 fprintf(stdout,"\nOpening Balance............... %14.2f\n",
		balance - (totinput + totintr));
	 fprintf(stdout,"Total amount invested......... %14.2f\n",totinput);
	 fprintf(stdout,"Total interest earned......... %14.2f\n",totintr);
	 fprintf(stdout,"\nEnding Balance................ %14.2f\n",balance);
	}
}
