Налоговый калькулятор в C # - Как отобразить долг с течением времени - PullRequest
0 голосов
/ 01 ноября 2018

Так что я хотел бы создать налоговый калькулятор в C #, который делает следующее:

Пример 1:

Input:

1200.0 - amount loaned

10 - tax in percentage

3 - number of years in debt 

Output:

    Growth of debt throughout 3 years:

    1200.0

    1320.0

    1452.0

    1597.2

Пока у меня есть это:

static int Mostra(int n, int p, int q)
    {
        int res = n + ((n * (p / 100)) * q);

        Console.WriteLine("Crescimento da dívida ao longo de " + q.ToString() + " anos:");

    }


    static bool Validar(string s, out int i)
    {
        bool res = int.TryParse(s, out i);
        if (!res)
            i = 0;
        return res;

    }


    static void Main(string[] args)
    {
        Console.WriteLine("Insira o valor do seu empréstimo em euros:");
        string s1 = Console.ReadLine();
        Console.WriteLine("Insira o valor correspondente à taxa de juro acordada:");
        string s2 = Console.ReadLine();
        Console.WriteLine("Insira o número de anos em que a dívida não foi paga:");
        string s3 = Console.ReadLine();

        string[] valores = new string[p];


        int n;
        int p;
        int q;


        if (Validar(s1, out n) && Validar(s2, out p) && Validar(s3, out q))
        {
            if (n >= 0 && p >= 0 && q >= 0 && p <= 100)
            {
                //Mostra(n, p, q);
            }
            else
                Console.WriteLine("O valor introduzido é inválido.");

        }

        Console.ReadKey();
    }

Имейте в виду, что это консольное приложение. Моя проблема здесь заключается в том, как отобразить задолженность по годам вместо окончательного результата. А также, как отобразить его в десятичных числах, как показано в примере. Если бы вы могли помочь мне, я был бы очень счастлив: D

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Ну вот, я заметил пару вещей, которые были немного шаткими. Вы захотите изменить некоторые переменные в Validar с int на double ... в противном случае, если вы хотите, чтобы ваш ввод был x.0, ваш код не будет обрабатывать .0, так как вы ищете int в вашем Валидар метод. Я исправил часть кода, чтобы любые вставленные вами целые работали, и вы получите вывод в том формате, который вы ищете.

using System;

    public class Program
    {
     static void Mostra(double n, double p, double q)
     {
    //double res = n + ((n * (p / 100)) * q);

    Console.WriteLine("Crescimento da dívida ao longo de " + q.ToString() + " anos: \n");

    //Loop that increments each year for q number of years
    for (int x = 0; x < q + 1; x++)
    {
        double res = 0;
        res = n + ((n * (p / 100)) * x);
        Console.WriteLine(res);
    }

}


static double Validar(string s)
{
    int x = int.Parse(s);
    double res = (double)(x);

    return res;

}


public static void Main(string[] args)
{
    Console.WriteLine("Insira o valor do seu empréstimo em euros:");
    string s1 = Console.ReadLine();
    Console.WriteLine("Insira o valor correspondente à taxa de juro acordada:");
    string s2 = Console.ReadLine();
    Console.WriteLine("Insira o número de anos em que a dívida não foi paga:");
    string s3 = Console.ReadLine();

    double n = Validar(s1);
    double p = Validar(s2);
    double q = Validar(s3);



    if (n >= 0 && p >= 0 && q >= 0 && p <= 100)
    {
        Mostra(n, p, q);
    }
    else
        Console.WriteLine("O valor introduzido é inválido.");

}
}
0 голосов
/ 01 ноября 2018

Если вы хотите отобразить результат в десятичном виде, вы должны использовать тип данных decimal, а не тип данных int.

в вашем первоначальном примере, хотя вы также добавляете проценты в год, хотя ваш расчет представляет собой фиксированный процент за весь период времени, функция должна выглядеть больше как

static int Mostra(decimal n, decimal p, int q)
{
    Console.WriteLine("Crescimento da dívida ao longo de " + q.ToString() + " anos:");
    decimal res = n;
    for (int i = 1; i <= q; i++)
    {
        res+= res * (p / 100);
        Console.WriteLine(res);
    }

}

вам также необходимо отредактировать метод Validar для обработки преобразования десятичных знаков, используя decimal.TryParse, поскольку процентная ставка и сумма должны быть десятичными для обработки вычислений на основе десятичных чисел - хотя Год может быть целым, хотя

...