Задача Back To The Past(Глава цикли от книгата "Основи на програмирането" - изпитни задачи с цикли)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _16.BackToThePast
{
class BackToThePast
{
static void Main(string[] args)
{
double Heritage = double.Parse(Console.ReadLine());
int YearHeWillLiveTo = int.Parse(Console.ReadLine());
int HowOldIsHeDies = (YearHeWillLiveTo - 1800) + 18;
bool IsHeInThePastHeWants = (YearHeWillLiveTo > 1800);
if (IsHeInThePastHeWants)
{
for (int Index = 18; Index <= HowOldIsHeDies; Index++)
{
if (Index % 2 == 0)
{
Heritage -= 12000;
}
else
{
Heritage -= 12000 + 50 * Index;
}
}
}
else
{
Console.WriteLine("I don't think this is the time period you would want to live in Ivan. Please enter another timeline and i will see if it is suitable for you, based on the lifestyle you had untill now.");
}
if (Heritage > 0)
{
Console.WriteLine($"Yes! He will live a carefree life and will have {Heritage:f2} dollars left.");
}
else
{
Console.WriteLine($"He will need {Math.Abs(Heritage):f2} dollars to survive.");
}
}
}
}
Ето ми го кода колеги. Дава ми 80/100. Нулевите тестови минават. След като с дебъгера проследя действието и по примерите дадени в условието, резултатите излизат абсолютно същите. Не мога да разбера от къде идва проблема.
Излишната проверка я направих с цел да си поиграя малко. Понеже ако да речем ще правим програма, която ще се внедрява, наш Иванчо може да избере година, различна от 1800. И затова реших да направя проверка, която, ако входът е различен от желания диапазон да каже, че на Ваньо няма да му хареса да живее в това време и да избере друго. В случая тя няма да се погледне даже от джъджа понеже той ще въвежда стойности от 1800 нагоре и програмата мисловно ще прескочи тази проверка.
А що се отнася до грешката, тя е в това че не съм сложил и = на проверката за успешно живеене. Ако разликата между парите, които ще са му нужни и парите, които той има е 0 той пак ще е имал достатъчно пари за да живее без да работи. Аз това не го съобразих обаче и не въведох "=" при проверката за положителен резултат. Колегата Васил пояснява тази грешка. Благодаря ви, че помогнахте :)
В случая задачата не изискваше подобна проверка.
Няма нужда принципно, да. Сега реших да се върна към задачата и да проверя дали ще ми приеме решението, без нея да я има но пак ми даде 80/100. Пробвах и със знак "=" и без, но в който и да е случай 80/100 ... Доста странно.
W bool sloji = за да хванеш вс случаи и ще стане.
Принципно нали знаеш, че колкото повече условия слагаш, толкова се увеличава шанса да объркаш нещо. На изпит не те съветвам да правиш подобни проверки, придържай се към условието.
Благодаря за съвета. Няма нужда да слагам в боол нещата, тей като вече съм си я решил с пълен брой точки :D . Ще го имам предвид другото. Принципно знам, но в случая го направих за заигравка. Просто ми е интересно да си правя такива допълнителни условия, с които програмата да стане по-готина. Като съм на изпит, естествено, че няма да проявявам такива своеволия. Въпреки всичко благодаря за пояснението.