#include #include #include #include #include "syokyaku.h" #define DATAFILE "vcdb.dat" /*---------パブリックメンバー----------*/ //コンストラクタ CSyokyaku::CSyokyaku() { //プロパティ初期化 memset(m_TeirituA, '\0', sizeof(&m_TeirituA)); memset(m_TeirituB, '\0', sizeof(&m_TeirituB)); memset(m_TeigakuA, '\0', sizeof(&m_TeigakuA)); memset(m_TeigakuB, '\0', sizeof(&m_TeigakuB)); memset(m_Misyokyaku, '\0', sizeof(&m_Misyokyaku)); m_YearA = 0; m_YearB = 0; } //デストラクタ CSyokyaku::~CSyokyaku() { } //計算 void CSyokyaku::GetData(char* YearA, char* YearB) { m_YearA = atoi(YearA); m_YearB = atoi(YearB); //メンバー呼び出し GetCulc(); GetItiran(); GetMisyokyaku(); strcpy(ans1, m_TeirituA); strcpy(ans2, m_TeirituB); strcpy(ans3, m_TeigakuA); strcpy(ans4, m_TeigakuB); strcpy(ans5, m_Misyokyaku); } /*----------プライベイトメンバー----------*/ //未償却割合 void CSyokyaku::GetMisyokyaku() { double num, tmp, v, x; v = atof(m_TeirituB); num = (double)1 - v; tmp = pow(num, m_YearB); x = (tmp + (double)0.0005); FILE *fl; fl = fopen(DATAFILE, "w"); fprintf(fl, "%-5.3f\n", x); fclose(fl); fopen(DATAFILE, "r"); fgets(m_Misyokyaku, 6, fl); fclose(fl); remove(DATAFILE); } //計算式より求める void CSyokyaku::GetCulc() { //定率法 double zan = (double)0.1; double num, tmp, v; tmp = (double)1 / m_YearA; num = pow(zan, tmp); v = 1 - num; FILE *fl; fl = fopen(DATAFILE, "w"); fprintf(fl, "%-5.3f\n", v); fclose(fl); fopen(DATAFILE, "r"); fgets(m_TeirituA, 6, fl); fclose(fl); //定額法 v = (double)1 / (double)m_YearA; fl = fopen(DATAFILE, "w"); fprintf(fl, "%-5.3f\n", v); fclose(fl); fopen(DATAFILE, "r"); fgets(m_TeigakuA, 6, fl); fclose(fl); remove(DATAFILE); } //別表第九 void CSyokyaku::GetItiran() { switch(m_YearA) { case 2: strcpy(m_TeirituB, "0.684"); strcpy(m_TeigakuB, "0.500"); break; case 3: strcpy(m_TeirituB, "0.536"); strcpy(m_TeigakuB, "0.333"); break; case 4: strcpy(m_TeirituB, "0.438"); strcpy(m_TeigakuB, "0.250"); break; case 5: strcpy(m_TeirituB, "0.369"); strcpy(m_TeigakuB, "0.200"); break; case 6: strcpy(m_TeirituB, "0.319"); strcpy(m_TeigakuB, "0.166"); break; case 7: strcpy(m_TeirituB, "0.280"); strcpy(m_TeigakuB, "0.142"); break; case 8: strcpy(m_TeirituB, "0.250"); strcpy(m_TeigakuB, "0.125"); break; case 9: strcpy(m_TeirituB, "0.226"); strcpy(m_TeigakuB, "0.111"); break; case 10: strcpy(m_TeirituB, "0.206"); strcpy(m_TeigakuB, "0.100"); break; case 11: strcpy(m_TeirituB, "0.189"); strcpy(m_TeigakuB, "0.090"); break; case 12: strcpy(m_TeirituB, "0.175"); strcpy(m_TeigakuB, "0.083"); break; case 13: strcpy(m_TeirituB, "0.162"); strcpy(m_TeigakuB, "0.076"); break; case 14: strcpy(m_TeirituB, "0.152"); strcpy(m_TeigakuB, "0.071"); break; case 15: strcpy(m_TeirituB, "0.142"); strcpy(m_TeigakuB, "0.066"); break; case 16: strcpy(m_TeirituB, "0.134"); strcpy(m_TeigakuB, "0.062"); break; case 17: strcpy(m_TeirituB, "0.127"); strcpy(m_TeigakuB, "0.058"); break; case 18: strcpy(m_TeirituB, "0.120"); strcpy(m_TeigakuB, "0.055"); break; case 19: strcpy(m_TeirituB, "0.114"); strcpy(m_TeigakuB, "0.052"); break; case 20: strcpy(m_TeirituB, "0.109"); strcpy(m_TeigakuB, "0.050"); break; case 21: strcpy(m_TeirituB, "0.104"); strcpy(m_TeigakuB, "0.048"); break; case 22: strcpy(m_TeirituB, "0.099"); strcpy(m_TeigakuB, "0.046"); break; case 23: strcpy(m_TeirituB, "0.095"); strcpy(m_TeigakuB, "0.044"); break; case 24: strcpy(m_TeirituB, "0.092"); strcpy(m_TeigakuB, "0.042"); break; case 25: strcpy(m_TeirituB, "0.088"); strcpy(m_TeigakuB, "0.040"); break; case 26: strcpy(m_TeirituB, "0.085"); strcpy(m_TeigakuB, "0.039"); break; case 27: strcpy(m_TeirituB, "0.082"); strcpy(m_TeigakuB, "0.037"); break; case 28: strcpy(m_TeirituB, "0.079"); strcpy(m_TeigakuB, "0.036"); break; case 29: strcpy(m_TeirituB, "0.076"); strcpy(m_TeigakuB, "0.035"); break; case 30: strcpy(m_TeirituB, "0.074"); strcpy(m_TeigakuB, "0.034"); break; case 31: strcpy(m_TeirituB, "0.072"); strcpy(m_TeigakuB, "0.033"); break; case 32: strcpy(m_TeirituB, "0.069"); strcpy(m_TeigakuB, "0.032"); break; case 33: strcpy(m_TeirituB, "0.067"); strcpy(m_TeigakuB, "0.031"); break; case 34: strcpy(m_TeirituB, "0.066"); strcpy(m_TeigakuB, "0.030"); break; case 35: strcpy(m_TeirituB, "0.064"); strcpy(m_TeigakuB, "0.029"); break; case 36: strcpy(m_TeirituB, "0.062"); strcpy(m_TeigakuB, "0.028"); break; case 37: strcpy(m_TeirituB, "0.060"); strcpy(m_TeigakuB, "0.027"); break; case 38: strcpy(m_TeirituB, "0.059"); strcpy(m_TeigakuB, "0.027"); break; case 39: strcpy(m_TeirituB, "0.057"); strcpy(m_TeigakuB, "0.026"); break; case 40: strcpy(m_TeirituB, "0.056"); strcpy(m_TeigakuB, "0.025"); break; case 41: strcpy(m_TeirituB, "0.055"); strcpy(m_TeigakuB, "0.025"); break; case 42: strcpy(m_TeirituB, "0.053"); strcpy(m_TeigakuB, "0.024"); break; case 43: strcpy(m_TeirituB, "0.052"); strcpy(m_TeigakuB, "0.024"); break; case 44: strcpy(m_TeirituB, "0.051"); strcpy(m_TeigakuB, "0.023"); break; case 45: strcpy(m_TeirituB, "0.050"); strcpy(m_TeigakuB, "0.023"); break; case 46: strcpy(m_TeirituB, "0.049"); strcpy(m_TeigakuB, "0.022"); break; case 47: strcpy(m_TeirituB, "0.048"); strcpy(m_TeigakuB, "0.022"); break; case 48: strcpy(m_TeirituB, "0.047"); strcpy(m_TeigakuB, "0.021"); break; case 49: strcpy(m_TeirituB, "0.046"); strcpy(m_TeigakuB, "0.021"); break; case 50: strcpy(m_TeirituB, "0.045"); strcpy(m_TeigakuB, "0.020"); break; case 51: strcpy(m_TeirituB, "0.044"); strcpy(m_TeigakuB, "0.020"); break; case 52: strcpy(m_TeirituB, "0.043"); strcpy(m_TeigakuB, "0.020"); break; case 53: strcpy(m_TeirituB, "0.043"); strcpy(m_TeigakuB, "0.019"); break; case 54: strcpy(m_TeirituB, "0.042"); strcpy(m_TeigakuB, "0.019"); break; case 55: strcpy(m_TeirituB, "0.041"); strcpy(m_TeigakuB, "0.019"); break; case 56: case 57: strcpy(m_TeirituB, "0.040"); strcpy(m_TeigakuB, "0.018"); break; case 58: strcpy(m_TeirituB, "0.039"); strcpy(m_TeigakuB, "0.018"); break; case 59: case 60: strcpy(m_TeirituB, "0.038"); strcpy(m_TeigakuB, "0.017"); break; case 61: strcpy(m_TeirituB, "0.037"); strcpy(m_TeigakuB, "0.017"); break; case 62: strcpy(m_TeirituB, "0.036"); strcpy(m_TeigakuB, "0.017"); break; case 63: strcpy(m_TeirituB, "0.036"); strcpy(m_TeigakuB, "0.016"); break; case 64: case 65: strcpy(m_TeirituB, "0.035"); strcpy(m_TeigakuB, "0.016"); break; case 66: strcpy(m_TeirituB, "0.034"); strcpy(m_TeigakuB, "0.016"); break; case 67: strcpy(m_TeirituB, "0.034"); strcpy(m_TeigakuB, "0.015"); break; case 68: case 69: strcpy(m_TeirituB, "0.033"); strcpy(m_TeigakuB, "0.015"); break; case 70: strcpy(m_TeirituB, "0.032"); strcpy(m_TeigakuB, "0.015"); break; case 71: case 72: strcpy(m_TeirituB, "0.032"); strcpy(m_TeigakuB, "0.014"); break; case 73: case 74: strcpy(m_TeirituB, "0.031"); strcpy(m_TeigakuB, "0.014"); break; case 75: case 76: strcpy(m_TeirituB, "0.030"); strcpy(m_TeigakuB, "0.014"); break; case 77: strcpy(m_TeirituB, "0.030"); strcpy(m_TeigakuB, "0.013"); break; case 78: case 79: strcpy(m_TeirituB, "0.029"); strcpy(m_TeigakuB, "0.013"); break; case 80: case 81: case 82: strcpy(m_TeirituB, "0.028"); strcpy(m_TeigakuB, "0.013"); break; case 83: case 84: strcpy(m_TeirituB, "0.027"); strcpy(m_TeigakuB, "0.012"); break; case 85: case 86: case 87: case 88: case 89: strcpy(m_TeirituB, "0.026"); strcpy(m_TeigakuB, "0.012"); break; case 90: strcpy(m_TeirituB, "0.025"); strcpy(m_TeigakuB, "0.012"); break; case 91: case 92: case 93: strcpy(m_TeirituB, "0.025"); strcpy(m_TeigakuB, "0.011"); break; case 94: case 95: case 96: strcpy(m_TeirituB, "0.024"); strcpy(m_TeigakuB, "0.011"); break; case 97: case 98: case 99: strcpy(m_TeirituB, "0.023"); strcpy(m_TeigakuB, "0.011"); break; case 100: strcpy(m_TeirituB, "0.023"); strcpy(m_TeigakuB, "0.010"); break; default: strcpy(m_TeirituB, "0.000"); strcpy(m_TeigakuB, "0.000"); } }