[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);
}
}
}
https://pastebin.com/AExnt2u0 - Заповядай.
Така сложена променливата в тази if конструкция увеличава years само тогава, когато числото(i) е четно. Нали за това си направил този if(i % 2 == 0) - да проверяваш за четните години и да правиш сметките по условието.
А всъщност годините си се увеличават - по принцип. За това първият код ти дава 100/100.