Loading...
KrissSvilenov avatar KrissSvilenov 1 Точки

[Programming Basic- Exam 17 July , 2016] -Задача 4. Завръщане в миналото.

Здравейте . Искам да попитам защо след като съм вкарал "years" да се добавят в if конструкцията judge ми дава  20/100 , а след като ги изкарам 100/100 . Благодаря предварително !

Задача 4. Завръщане в миналото
Иванчо е на 18 години и получава наследство, което се състои от X сума пари и машина на времето. Той решава да се върне до 1800 година, но не знае дали парите ще са достатъчни, за да живее без да работи. Напишете програма, която пресмята, дали Иванчо ще има достатъчно пари, за да не се налага да работи до дадена година включително. Като приемем, че за всяка четна (1800, 1802 и т.н) година ще харчи 12 000 лева. За всяка нечетна (1801,1803  и т.н.) ще харчи 12 000 + 50 * [годините, които е навършил през дадената година].
Вход
Входа(ът) се чете от конзолата и съдържа точно 2 реда:
Наследените пари – реално число в интервала [1.00 ... 1 000 000.00]
Годината, до която трябва да живее (включително) – цяло число в интервала [1801 ... 1900]
Изход
Да се отпечата на конзолата 1 ред. Сумата трябва да е форматирана до два знака след десетичната запетая:
Ако парите са достатъчно:
„Yes! He will live a carefree life and will have {N} dollars left.“ – където N са парите, които ще му останат.
Ако парите НЕ са достатъчно:
„He will need {М} dollars to survive.“ – където M е сумата, която НЕ достига.
 

using System;


namespace date
{
    class Program
    {
        static void Main(string[] args)
        {
            double inheritance = double.Parse(Console.ReadLine());
            int yearsInFuture = int.Parse(Console.ReadLine());

            string result = "";
            double oldsum = 0;
            double evenOrOdd = inheritance;
            int years = 18;

            for (int i = 1800; i <= yearsInFuture; i++)
            {
                if (i % 2 == 0)
                {                  
                    evenOrOdd -= 12_000;
                    oldsum = evenOrOdd;
                   
                }else
                { 
                    evenOrOdd = (12_000+ (50 * years));
                    evenOrOdd =oldsum- evenOrOdd;
                }
                years++;
            }
            
            if(evenOrOdd >=0 &&evenOrOdd <= inheritance)
            {
                result = $"Yes! He will live a carefree life and will have {(evenOrOdd):f2} dollars left.";
            }
            else if (evenOrOdd < 0)
            {
                result = $"He will need {Math.Abs(evenOrOdd):f2} dollars to survive.";
            }
            Console.WriteLine(result);
        }
    }
}

Тагове:
0
Programming Basics
dimaldim92 avatar dimaldim92 149 Точки

Дай кода така, както ти дава 20/100,

0
KrissSvilenov avatar KrissSvilenov 1 Точки

https://pastebin.com/AExnt2u0 - Заповядай.

0
dimaldim92 avatar dimaldim92 149 Точки

Така сложена променливата в тази if конструкция увеличава years само тогава, когато числото(i) е четно. Нали за това си направил този if(i % 2 == 0) - да проверяваш за четните години и да правиш сметките по условието.

А всъщност годините си се увеличават - по принцип. За това първият код ти дава 100/100.

0
11/07/2018 15:43:28
fbinnzhivko avatar fbinnzhivko 1586 Точки

Задачата е интересна разгледаѝ тези решения.

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

Защото без значение в коя проверка влизаш годините ти трябва да се увеличават. Дали е четна или нечетна те интересува само дотолкова доколкото да смениш сумите по зададената логика. Ако държиш проверката за years в някои от if ще изпускаш годините в който не влизаш в проверката и от там ще ти се сменят числата.

0
KrissSvilenov avatar KrissSvilenov 1 Точки

Логично е , но кой да се сети .Благодаря ти!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.