#include double atof(); main(argc, argv) int argc; char *argv[]; { char tmp[200]; int length = 0; double cost = 0; double salvage = 0; double sln = 0; double syd = 0; double sumyears = 0; double ddb = 0; double ddbtotal = 0; double sumsln = 0; double sumsyd = 0; double sumddb = 0; int i =0; if ((argc == 2) && ((argv[1][0] == 'p') || (argv[1][0] == 'P'))) { fprintf(stdout,"Enter cost <$>................... "); fgets(tmp,100,stdin); cost = atof(tmp); fprintf(stdout,"Enter salvage value <$>.......... "); fgets(tmp,100,stdin); salvage = atof(tmp); fprintf(stdout,"Enter life ............... "); fgets(tmp,100,stdin); length = atoi(tmp); fprintf(stdout,"\n"); } else if ((argc == 2) && ((argv[1][0] == 'v') || (argv[1][0] == 'V'))) { fprintf(stdout,"deprec: Version 1.00 \n"); fprintf(stdout," Copyright 1987 by Michael Brochstein\n"); fprintf(stdout," All rights reserved.\n"); } else if (argc != 4) { fprintf(stderr,"Usage: deprec p \n"); fprintf(stderr," deprec v \n"); fprintf(stderr," deprec "); fprintf(stderr,"\n"); } else if (argc == 4) { cost = atof(argv[1]); salvage = atof(argv[2]); length = atoi(argv[3]); } if ((argc == 4) || ((argc == 2) && ((argv[1][0] == 'p') || (argv[1][0] == 'P')))) { fprintf(stdout," Double-Declining "); fprintf(stdout,"Sum-of-the-years\n"); fprintf(stdout,"Year Straight Line Balance "); fprintf(stdout," Digits \n"); fprintf(stdout,"---- ------------- ---------------- "); fprintf(stdout,"----------------\n"); sln = (cost - salvage) / length; ddbtotal = cost; for (i = 0; i <= length; ++i) { sumyears += i; } for (i = 1; i <= length; ++i) { ddb = 2 * ddbtotal / length; if (((ddbtotal - salvage) > 0) && (ddb > (ddbtotal - salvage))) { ddb = ddbtotal - salvage; ddbtotal = 0; } else if (ddb > 0) { ddbtotal -= ddb; } syd = ((length - i + 1) / sumyears) * (cost - salvage); sumsln += sln; sumddb += ddb; sumsyd += syd; fprintf(stdout,"%3d %13.2f %16.2f %17.2f\n", i,sln,ddb,syd); } fprintf(stdout,"---- ------------- ---------------- "); fprintf(stdout,"----------------\n"); fprintf(stdout,"TOTAL: %12.2f %16.2f %17.2f\n", sumsln,sumddb,sumsyd); } }