Софтуерно Инженерство
Loading...
+ Нов въпрос
Greak avatar Greak 0 Точки

Задача "ремонт на плочки" от PB C# Book

Здравейте на всички, имам един проблем със съответната задача от заглавието. При следните условия за вход/изход:

Вход Изход
20 19,9
5

4

1

3,98

2

 

при мен излиза изход 20 и 4 ? Пробвах с Math. Round, ToString("N2"), минах през DateTime (за 3,98 по-конкретно), обиколих MSDN, но нещо не се справям и имам нужда от помощ. Ето кода ми:

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

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            double N = double.Parse(Console.ReadLine());
            double W = double.Parse(Console.ReadLine());
            double L = double.Parse(Console.ReadLine());
            double M = double.Parse(Console.ReadLine());
            double O = double.Parse(Console.ReadLine());

            double NSum = N * N;
            double MOSum = M * O;
            double ToBePainted = NSum - MOSum;
            double SinglePieceTile = W * L;
            double RequiredTiles = NSum / SinglePieceTile;
            double Time = RequiredTiles * 0.2;


            //Console.WriteLine(RequiredTiles.ToString("N2")); //Not working
            //Console.WriteLine(Time.ToString("N2")); //Still not working :(
            //Console.WriteLine(Math.Round(Time, 2)); //Second try, Nope

За необходими плочки може би е по-добре да се закръгли, все пак кой ще купи 19.9 плочки, а не 20, но Judge няма да го приеме.. Благодаря.

0
Programming Basics with C#
AlexTasev avatar AlexTasev 65 Точки
Best Answer

Здравей,

Пробвах задачата и излиза вярна в judge без закръгляване. Както е дадено в примера, изхода са 19.9 плочки за 3.98 минути. Ако махнеш всякакви закръглявания и др. операции и просто си изкараш резултата вероятно ще стане. Пробвай просто с:

Console.WriteLine(RequiredTiles);
Console.WriteLine(Time);

 

Можеш да видиш моето решение на:

https://pastebin.com/gdwg4a5g

Поздрави!

0
27/03/2018 14:31:21
Greak avatar Greak 0 Точки

М не, не става. Judge ми дава 30 точки. Това е задачата, с всички закръглявания и подобни махнати:

https://imgur.com/byYUq5x

При мен проблема е че и без закръгляване става на 20 и 4, автоматично го закръглява нагоре и не знам защо, при положение че не съм ползвал int, а double.

0
27/03/2018 14:39:19
AlexTasev avatar AlexTasev 65 Точки

Открих грешката.

Делиш цялата площ на броя плочки, а трябва да е площта на площадката мунус площта на пейката в числител.

Ето в този ред:

double RequiredTiles = ToBePainted / SinglePieceTile;

си взел NSum вместо ToBePainted.

Затова ти трябват повече плочки, пейката я няма :-)

0