Loading...
OTPOBEH avatar OTPOBEH 6 Точки

[Programming Basics] Exam - 19 March 2017 - Morning, Problem 01 - House Painting

Здравейте. Имам въпрос относно задачата по-долу. Изглежда има някаква врътка, която аз пропускам, но проверката в judge е направена така, че да изисква загуба на точност при изчисляване на страната на покрива(в примера  тя е изчислена на 6, а тя всъщност е 6.0033...).

Знаете ли кога трябва да се закръгля и как това се упоменава в judge, защото на изпита едно такова нещо може да ми изгуби време.

Ето задачата:

https://judge.softuni.bg/Contests/Practice/Index/499#0

 

Ето решението ми, което излиза в judge с 0/100

https://pastebin.com/bXnXpThc

 

Бклагодаря.

Тагове:
0
Programming Basics 19/05/2017 11:42:31
spzvtbg avatar spzvtbg 581 Точки

using System;

namespace HousePainting01

{

    class HousePainting

    {

        static void Main()

        {

            double houseHight = double.Parse(Console.ReadLine());

            double houseLenght = double.Parse(Console.ReadLine());

            double roofHight = double.Parse(Console.ReadLine());

 

            double door = 1.2 * 2;

            double window = 1.5 * 1.5;

            double longLows = houseHight * houseLenght * 2;

            double scortLows = houseHight * houseHight * 2;

 

            double lowsArea = longLows + scortLows - door - 2 * window;

            double roofArea = 2 * ((roofHight * houseHight) / 2) + 2 * (houseHight * houseLenght);

 

            double lowsPaint = lowsArea / 3.4;

            double roofPaint = roofArea / 4.3;

 

            Console.WriteLine($"{lowsPaint:0.00}");

            Console.WriteLine($"{roofPaint:0.00}");

        }

    }

}

0
18/05/2017 17:32:46
ppbaev avatar ppbaev 157 Точки

Проблема е, че равностранен триъгълник със страна 6 и височина 5.2 реално не съществува,  височината е 5.19615... и т.н, което изглежда приблизително същото, ама резултатите почват да се разминават като ги ползваш тези числа в истински формули за триъгълник. Шанса е, че всички тестове ползват за вход закръглени стойности за параметрите на тригълника.

var roofSide   = Math.Sqrt(x/2 * x/2 + h*h);

Конкретно за твоя код този ред е проблема, защото roofSide = x по условие и се опитваш да го преизчислиш с питагоровата теорема и всичко се омазва, заради закръглянето на височината във входните данни.

Даже, ако го смениш с var roofSide = x;  дава 100 без да пипаш нщо друго.

0
18/05/2017 18:36:44
detkov avatar detkov 3 Точки

var roofArea   = 2 * (x * y) + (2 * (x * h / 2));

 

Смених двата реда за покрива със този код и стана. 100/ 100

Нещо не мога да разбера къде грешиш. Може би в Math.Sqrt. 

Нямам и време. 

Дано съм помогнал.

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