#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 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 initial 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,"comptbl: 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: comptbl p \n");
	 fprintf(stderr,"       comptbl v \n");
	 fprintf(stderr,"       comptbl <initial investment> <interest rate>");
	 fprintf(stderr,"\n               <length of investment (years)>\n");
	 fprintf(stderr,"       comptbl <initial investment> <interest rate>");
	 fprintf(stderr,"\n               <length of investment (years)>");
	 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,"comptbl: Number of compounding ");
		 fprintf(stderr,"periods must be >= 1; using 1\n\n");
		 nmperiod = 1;
		}
	 per_intr = (1.0 / nmperiod) * interest;

	 fprintf(stdout,"Year     Interest Paid   ");
	 fprintf(stdout,"Year End Balance\n");
	 fprintf(stdout,"----     -------------   ----------------\n");
	 fprintf(stdout,"%4d   %14.2f  %17.2f\n", i,int_paid,yr_input);

	 balance = yr_input;
	 for (i = 1; i <= length; ++i)
		{
		 int_paid = 0;
		 sum_intr = 0;
		 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  %17.2f\n",
			i,sum_intr,balance);
		}
	 fprintf(stdout,"----     -------------   ----------------\n");
	 fprintf(stdout,"TOTAL: %14.2f  %17.2f\n", totintr, balance);
	}
}
