Loading...
Destinote avatar Destinote 5 Точки

Задача 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. Нулевите тестови минават. След като с дебъгера проследя действието и по примерите дадени в условието, резултатите излизат абсолютно същите. Не мога да разбера от къде идва проблема.

Тагове:
0
Programming Basics
EmanuilNikolov avatar EmanuilNikolov 33 Точки

Правиш проверка, която явно е излишна.

using System;

public class Program
{
    public static void Main()
    {
        double Heritage = double.Parse(Console.ReadLine());
        int YearHeWillLiveTo = int.Parse(Console.ReadLine());
        int HowOldIsHeDies = (YearHeWillLiveTo - 1800) + 18;
        
        for (int Index = 18; Index <= HowOldIsHeDies; Index++)
        {
            if (Index % 2 == 0)
            {
                Heritage -= 12000;
            }
            else
            {
                Heritage -= (12000 + 50 * Index);
            }
        }
        
        if (Heritage >= 0)
        {
            Console.WriteLine("Yes! He will live a carefree life and will have {0:f2} dollars left.", Heritage);
        }
        else
        {
            Console.WriteLine("He will need {0:f2} dollars to survive.", (Heritage*-1));
        }    
    }
}

0
15/03/2018 13:31:29
Destinote avatar Destinote 5 Точки

Излишната проверка я направих с цел да си поиграя малко. Понеже ако да речем ще правим програма, която ще се внедрява, наш Иванчо може да избере година, различна от 1800. И затова реших да направя проверка, която, ако входът е различен от желания диапазон да каже, че на Ваньо няма да му хареса да живее в това време и да избере друго. В случая тя няма да се погледне даже от джъджа понеже той ще въвежда стойности от 1800 нагоре и програмата мисловно ще прескочи тази проверка. 
А що се отнася до грешката, тя е в това че не съм сложил и = на проверката за успешно живеене. Ако разликата между парите, които ще са му нужни и парите, които той има е 0 той пак ще е имал достатъчно пари за да живее без да работи. Аз това не го съобразих обаче и не въведох "=" при проверката за положителен резултат. Колегата Васил пояснява тази грешка. Благодаря ви, че помогнахте :) 

0
EmanuilNikolov avatar EmanuilNikolov 33 Точки

В случая задачата не изискваше подобна проверка. 

0
15/03/2018 15:58:15
Destinote avatar Destinote 5 Точки

Няма нужда принципно, да. Сега реших да се върна към задачата и да проверя дали ще ми приеме решението, без нея да я има но пак ми даде 80/100. Пробвах и със знак "=" и без, но в който и да е случай 80/100 ... Доста странно. 

0
EmanuilNikolov avatar EmanuilNikolov 33 Точки

W bool sloji = за да хванеш вс случаи и ще стане.

0
EmanuilNikolov avatar EmanuilNikolov 33 Точки

Принципно нали знаеш, че колкото повече условия слагаш, толкова се увеличава шанса да объркаш нещо. На изпит не те съветвам да правиш подобни проверки, придържай се към условието.

0
Destinote avatar Destinote 5 Точки

Благодаря за съвета. Няма нужда да слагам в боол нещата, тей като вече съм си я решил с пълен брой точки :D . Ще го имам предвид другото. Принципно знам, но в случая го направих за заигравка. Просто ми е интересно да си правя такива допълнителни условия, с които програмата да стане по-готина. Като съм на изпит, естествено, че няма да проявявам такива своеволия. Въпреки всичко благодаря за пояснението. 

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