#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 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,"iratbl: Version 1.00 \n");
	 fprintf(stdout,"        Copyright 1987 by Michael Brochstein\n");
	 fprintf(stdout,"        All rights reserved.\n");
	}
else if ((argc != 4) && (argc != 5))
	{
	 fprintf(stderr,"Usage: iratbl p \n");
	 fprintf(stderr,"       iratbl v \n");
	 fprintf(stderr,"       iratbl <yearly investment> <interest rate> ");
	 fprintf(stderr,"<length of investment (yrs)>\n");
	 fprintf(stderr,"       iratbl <yearly investment> <interest rate> ");
	 fprintf(stderr,"<length of investment (yrs)>\n");
	 fprintf(stderr,"              <compounding periods per year>\n");
	}
else if ((argc == 4) || (argc == 5))
	{
	 yr_input = atof(argv[1]);
	 interest = atof(argv[2]) / 100;
	 length = atoi(argv[3]);
	 if (argc == 5)
		{
	 	 nmperiod = atoi(argv[4]);
		}
	}
if ((argc == 4) || (argc == 5) 
	|| ((argc == 2) && ((argv[1][0] == 'p') || (argv[1][0] == 'P'))))
	{
	 if (nmperiod <= 0)
		{
		 fprintf(stderr,"iratbl: Number of compounding periods ");
		 fprintf(stderr,"must be >= 1; using 1\n\n");
		 nmperiod = 1;
		}

	 per_intr = (1.0 / nmperiod) * interest;

	 fprintf(stdout,"Year  Amount Invested   Interest Paid   ");
	 fprintf(stdout,"Year End Balance\n");
	 fprintf(stdout,"----  ---------------   -------------   ");
	 fprintf(stdout,"----------------\n");
	 fprintf(stdout,"%4d   %14.2f  %14.2f  %17.2f\n",
		i,yr_input,int_paid,yr_input);

	 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,"%4d   %14.2f  %14.2f  %17.2f\n",
			i,yr_input,sum_intr,balance);
		}
	 fprintf(stdout,"----  ---------------   -------------   ");
	 fprintf(stdout,"----------------\n");
	 fprintf(stdout,"TOTAL: %14.2f  %14.2f  %17.2f\n",
		totinput, totintr, balance);
	}
}
