Loading...
blaga_ivanova avatar blaga_ivanova 0 Точки

Задача 4. Завръщане в миналото

Дава ми 90/100 и не мога да разбера къде ми е грешката.

 

Изпит по "Програмиране за начинаещи" – 17 юли 2016

Задача 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;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _04
{
    class Program
    {
        static void Main(string[] args)
        {
            var nasledstvo = double.Parse(Console.ReadLine());
            var godinaExit = int.Parse(Console.ReadLine());

            var ageIvan = 0;


            for (int godina = 1800; godina <= godinaExit; godina++)
            {

                if (godina % 2 == 0)
                {

                    nasledstvo -= 12000;
                }
                else
                {
                    ageIvan = (godinaExit - godina) + 18;
                    nasledstvo -= 12000 + (ageIvan * 50);
                }

            }
            if (nasledstvo >= 0)
            {
                Console.WriteLine($"Yes! He will live a carefree life and will have {nasledstvo:f2} dollars left.");
            }
            else
            {
                nasledstvo = Math.Abs(nasledstvo);
                Console.WriteLine($"He will need {nasledstvo:f2} dollars to survive.");
            }

        }
    }
}
 

Тагове:
0
Programming Basics 15/12/2017 10:52:39
kera123 avatar kera123 3 Точки

Моето решение - https://pastebin.com/uP3fhSWq

0
gstefanova22 avatar gstefanova22 4 Точки

Ето ти и моето решение. Дано ти е от помощ. Успех!
       

double nasledstvo = double.Parse(Console.ReadLine());
        int godina = int.Parse(Console.ReadLine());

        for (int i = 1800; i <= godina; i++)
        {
            if (i % 2 == 0)
            {
                nasledstvo = nasledstvo - 12000;
            }
            else
            {
                nasledstvo = nasledstvo - (12000 + (18 + (i - 1800)) * 50);
            }
        }
        if (nasledstvo >= 0)
        {
            Console.WriteLine("Yes! He will live a carefree life and will have {0:f2} dollars left.", nasledstvo);
        }
        else
        {
            Console.WriteLine("He will need {0:f2} dollars to survive.", Math.Abs(nasledstvo));
        }

0
15/12/2017 11:55:48
fbinnzhivko avatar fbinnzhivko 1586 Точки

Колега ще започна отдалече.
На изпита имаше грешни тестове след това ги оправиха затова може и да не ти се получава.
Не използвай var не знаеш какво се случва отдолу.

Решения
 

0
15/12/2017 12:47:22
blaga_ivanova avatar blaga_ivanova 0 Точки

Възможно ли е да има и на други изпити грешни тестове, защото в момента имам същия проблем с друга задача. От примерите за вход и изход всичко ми съвпада, но отново ми дава 90 от 100. 

Промених както ме посъветвахте var, но не се получава.

 

Това е другата задача и решението ми.

Изпит по "Основи на програмирането" – 18 декември 2016

Задача 2. Смяна на плочки

Хараламби има събрани пари с които иска да смени плочките на пода в банята. Като подът е правоъгълник, а плочките са триъгълни. Напишете програма, която да пресмята дали събраните пари ще му стигнат. От конзолата се чете широчината и дължината на пода, както и едната страна на триъгълника с височината към нея. Трябва да пресметнете колко плочки са нужни, за да се покрие пода. Броят на плочките трябва да се закръгли към по-високо цяло число и да се прибавят още 5 броя за фира. От конзолата се четат още – цената на плочка и сумата за работата на майстор.

Вход

От конзолата се четат 7 реда:

 

Ред 1.Събраните пари

Ред 2.Широчината на пода

Ред 3.Дължината на пода

Ред 4.Страната на триъгълника

Ред 5.Височината на триъгълника

Ред 6.Цената на една плочка

Ред 7.Сумата за майстора

 

Всички числа са реални числа в интервала [0.00 ... 5000.00]

 

Изход

На конзолата трябва да се отпечата на един ред:

  • Ако парите са достатъчно:
    • “{Оставащите пари} lv left.”
  • Ако парите НЕ СА достатъчно:
    •  “You'll need {Недостигащите пари} lv more.”

Резултатът трябва да е форматиран до вторият знак след десетичната запетая.

Примерен вход и изход

Вход

Изход

Обяснения

500

3

2.5

0.5

0.7

7.80

100

25.60 lv left.

Площ на пода → 3 * 2.5 = 7.5

Площта на плочка → 0.5 * 0.7 / 2 = 0.175

Необходими плочки → 7.5 / 0.175 = 42.857... = 43 + 5 фира = 48

Обща сума → 48 * 7.8 + 100(майстор) = 474.4

474.4 < 500остават 25.60 лева

Вход

Изход

Обяснения

1000

5.55

8.95

0.90

0.85

13.99

321

You'll need 1209.65 lv more.

Площ на пода → 5.55 * 8.95 = 49.67249

Площта на плочка → 0.9 * 0.85 / 2= 0.3825

Необходими плочки → 49.67249 / 0.3825 = 129.86... = 130 + 5 фира = 135

Обща сума → 135 * 13.99 + 321(sмайстор) = 2209.65

2209.65 > 1000 → остават 1209.65 лева

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _02
{
    class Program
    {
        static void Main(string[] args)
        {
            double money = double.Parse(Console.ReadLine());
            double widthOnFloor = double.Parse(Console.ReadLine());
            double lenghtOnFloor = double.Parse(Console.ReadLine());
            double sideOfTriangle = double.Parse(Console.ReadLine());
            double heightOfTriangle = double.Parse(Console.ReadLine());
            double priceForTile = double.Parse(Console.ReadLine());
            double sumForMaster = double.Parse(Console.ReadLine());

            double AreaOnFloor = widthOnFloor * lenghtOnFloor;
            double AreaOnTile = (sideOfTriangle * heightOfTriangle) / 2;
            double allTile = Math.Ceiling (AreaOnFloor / AreaOnTile) +5; //5 = fira
            double allSum = (allTile * priceForTile) + sumForMaster;

            if (allSum < money)
            {
                double ostavashti = money - allSum;
                Console.WriteLine($"{ostavashti:f2} lv left.");
            }
            else
            {
                double nedostigashti = allSum - money;
                Console.WriteLine($"You'll need {nedostigashti:f2} lv more.");
            }
            
        }
    }
}
 

0
blaga_ivanova avatar blaga_ivanova 0 Точки

За втората задача си открих грешката.

При if-условието не съм добавила равното  :)

0
traykova44 avatar traykova44 93 Точки

Judge дава 100 точки

https://pastebin.com/dFvg2U3B

0
Ignatovw99 avatar Ignatovw99 4 Точки

Judge ми дава 50/100, въпреки че програмата работи. Не разбирам къде ми е грешката.

Решението ми - https://pastebin.com/bB745zvH

0
TeMePyT avatar TeMePyT 142 Точки

if (heritage >= 0 )
            {
                Console.WriteLine("Yes! He will live a carefree life and will have {0:f2} dollars left", heritage);
            }

Изречението завършва с точка.  Аз вече свикнах да правя double check на изхода за пунктуация и правопис :) Иначе да, кода си е наред.

0
25/01/2018 15:58:54
Ignatovw99 avatar Ignatovw99 4 Точки

Вече ще имам едно наум за изхода да го проверявам винаги. Благодаря ти !

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