Как увеличивать переменную каждый раз, когда увеличивается год? - PullRequest
0 голосов
/ 14 июня 2019

В моей программе есть общий оценщик цен на автомобили.Если год ниже 1990 года, цена устанавливается на уровне 1000 долларов.Но если год увеличивается на один год для каждого добавленного года, к смете должны быть добавлены дополнительные 200 долларов.Например, если 1991 год, то цена должна быть 1200 долларов.

Я попытался увеличить год в операторе if и добавить 200 к переменной, используемой для установки цены, а это неРабота.Я также пытался использовать цикл for, который тоже не удался.

public decimal DetermineMarketValue()
        {
            decimal carValue;
            if (Year < 1990)
                carValue = 1000;
            if (Year > 1990)
                for (Year++)
                {
                    carValue += 200;     
                }

            return carValue;

        }

Каждый раз, когда год увеличивается на единицу, оценка должна увеличиваться на 200 долларов.

Ответы [ 3 ]

2 голосов
/ 14 июня 2019

Я думаю, что вы не инициализировали carValue, компилятор сломается, однако вам нужно инициализировать со значением по умолчанию.

По моему мнению, не используйте циклы, если у вас есть простой расчет, как этот.

public class Program
{
    public static void Main()
    {
        Console.WriteLine(DetermineMarketValue(2019));
    }

    public static double DetermineMarketValue(int Year)
    {
        double carValue = 1000;
        if (Year > 1990)
        {
            int numYears = Math.Abs(Year - 1990);
            carValue = 1000 + (numYears * 200);
        }
        return carValue;
    }
}

см. Результат здесь .

0 голосов
/ 14 июня 2019

Я ценю замечания, поднятые в комментариях, но также считаю, что это академическое упражнение, которое является хорошим введением в циклическую логику, поэтому я буду настаивать на решении циклических задач. Вы изучаете и, по-видимому, на ранних этапах - я не могу не подчеркнуть, насколько важно писать алгоритмы на английском (или на вашем родном языке), прежде чем пытаться писать код. Всю свою жизнь вы думали по-английски, и теперь вы изучаете новый язык со строгими правилами и высоким требованием быть точным. Точно так же, как если бы вы говорили по-французски, и сначала вы собрали предложение, которое хотите сказать по-английски (со словами во французском порядке), затем вы переводите на французский, а затем говорите по-французски. Это займет много времени, прежде чем вы думаете на французском

То же самое для кода; думать по-английски, писать комментарии на английском языке, перевод на c #, вуаля; красиво прокомментированный код (бонусные баллы)

В моей программе есть общий оценщик цен на автомобили. Если год ниже 1990 года, цена устанавливается на уровне 1000 долларов. Но если год увеличивается на один год для каждого добавленного года, к смете должны быть добавлены дополнительные 200 долларов. Например, если 1991 год, то цена должна быть 1200 долларов.

Я попытался увеличить год в операторе if и добавить 200 к переменной, используемой для установки цены, что не работает. Я также пытался использовать цикл for, который тоже не удался.

    //this should take in the year as a parameter to determine for 
    public int DetermineMarketValue(int forYear)
    {
        //pick 1000 as the starting value 
        int carValue = 1000;

        //if the user asked for earlier than 1990, quit early 
        if (forYear < 1990)
            return carValue;

        //they must have asked for a year after 1990, let's do the math 

        //start with 1990, test if we should add to the value, go up a year and test if we should add again
        //this logic starts with 1990 and if the user asked for 1990 the loop will not run, 1991 it UBS once etc
        //if the logic should be that a 1990 car is worth 1200, make it <= not <
        for (int year = 1990; year < forYear; year++)
        {
                //add 200 dollars onto the value and test
                carValue -= 200;     
        }

         //the loop has run the required number of times to get the final value, return it
        return carValue;

    }

В этом коде есть преднамеренная ошибка - Я здесь не для того, чтобы получить вашу степень за вас, поэтому я допустил грубую и преднамеренную ошибку, отчасти для того, чтобы вы подумали о написанном коде и частично, чтобы подчеркнуть, как, когда вы пишете свой алгоритм в комментариях, вы можете проверить, что код соответствует комментариям

0 голосов
/ 14 июня 2019

Если вам нужно использовать цикл, подумайте, что вы должны использовать цикл while вместо:

public static decimal DetermineMarketValue(int Year)
        {
            decimal carValue = 1000;

            while (Year > 1990)
            {
                carValue += 200;
                Year--;
            }

            return carValue;

        }
...