[Programming Basics] Exam - 19 March 2017 - Morning, Problem 01 - House Painting - Софтуерен университет

+ Нов въпрос
OTPOBEH avatar OTPOBEH 5 Точки

[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
Основи на програмирането 19/05/2017 11:42:31
spzvtbg avatar spzvtbg 560 Точки

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 155 Точки

Проблема е, че равностранен триъгълник със страна 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