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