年の合計の減価償却(SYD)デバッグ

2020-06-30 c# formula

減価償却計算機を作成して、定額減価償却(SLN)と年の合計の減価償却(SYD)の両方を計算する必要があります。

SLNおよびSYD関数はプログラマーが定義する必要があります。

SLN()を取得できましたが、SYD()の場合、最大5ライフまでの正しい出力しか取得できません。それ以上の場合は、正しくない出力が表示されます。

正しい出力 ここに画像の説明を入力してください

間違った出力 ここに画像の説明を入力してください

これが私のコードです

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

    namespace Depreciation_Calculator
   {
    public partial class Form1 : Form
 {
    public Form1()
    {
        InitializeComponent();
        //initialize comboBox and depreciation
        comboBoxLife.SelectedIndex = 0;
        radioButtonSLine.Checked = true;
        
    }

    private void buttonUpdate_Click(object sender, EventArgs e)
    {
        //validate input
        if (!isNumeric(textBoxICost.Text) || double.Parse(textBoxICost.Text ) < 0|| !isNumeric(textBoxSVal.Text) || double.Parse(textBoxSVal.Text) < 0)
            MessageBox.Show("Input amount must be numeric > 0");
        else if (double.Parse(textBoxICost.Text) <= double.Parse(textBoxSVal.Text))
            MessageBox.Show("Initial Cost must be greater than Salvage Cost");
        else
        {
            //declare and initialize
            double depreciation = 0, bookVal = 0;
            int life = int.Parse(comboBoxLife.GetItemText(comboBoxLife.SelectedItem));
            double asset = double.Parse(textBoxICost.Text);
            double sVal = double.Parse(textBoxSVal.Text);
            listBoxOutput.Items.Clear(); // clear ouput

            //check method
            if (radioButtonSLine.Checked)
            {
                depreciation = SLN(asset, sVal, life);
                bookVal = asset;
                listBoxOutput.Items.Add("YEAR\t\tDEPRECIATION\t\tBOOK VALUE");
                for (int x = 0; x < life; ++x)
                {
                    bookVal -= depreciation;

                    listBoxOutput.Items.Add(x + 1 + "\t\t$" + depreciation + "\t\t\t$" + bookVal);
                }
            }
            else
            {
                int y = life;
                bookVal = asset;
                listBoxOutput.Items.Add("YEAR\t\tDEPRECIATION\t\tBOOK VALUE");
                for (int x = 0; x < life; ++x)
                {
                    depreciation = (asset - sVal) * (y / SYD(life));
                    bookVal = bookVal - depreciation;
                    listBoxOutput.Items.Add(x + 1 + "\t\t$" + depreciation + "\t\t\t$" + bookVal);
                    --y;
                }

            }
        }

    }
    // check if numeric
    public bool isNumeric(string s)
    {
        double val;
        return double.TryParse(s, out val);
    }
    // programmer defined SLN function
    private double SLN(double asset, double sVal, int life)
    {
        double depreciation;
        return depreciation = (asset - sVal) / life;
    }
    // programmer defined SYD function
    private double SYD(int life)
    {
        double depreciation;
        return depreciation = life * (life+1) / 2;
    }

    private void comboBoxLife_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    private void buttonExit_Click(object sender, EventArgs e)
    {
        Close();
    }
}
}

誰かが私のコードをチェックできますか?

Answers

Related