Loading...
george_gramatikov avatar george_gramatikov 1 Точки

Задача 2 - фирма от изпита на 28.08.2016

Задача номер 2 от тук:

https://judge.softuni.bg/Contests/274/Programming-Basics-Exam-28-August-2016

за фирма ме затруднява.

При мен се получава 71.4, което с Math.Floor - към по малкото целочислено число би го закръглило към 71. А очаквания изход е 72.

Аз съм го написал с Math.Ceiling. Идеи аз ли се бъркам някаде, или има някаква неточност в условието.

Закръглям най-накрая непосредствено преди печатане, така че не би трябвало да има неточности.

При проверката с втория вход:

99
3
1

Трябва да изкара изход: Not enough time!72 hours needed.

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

(Часовете трябва да са закръглени към по-ниско цяло число (Например –> 6.98 часа се закръглят на 6 часа).

 

var nHours = int.Parse(Console.ReadLine());
            var nDays = int.Parse(Console.ReadLine());
            var workers = int.Parse(Console.ReadLine());
            var inHours = 0.0;
            inHours = (nDays * 8) + ((workers * 2) * nDays) - (0.1*nDays*8); //Тук се получава: 3*8+1*2*3-0,1*3*8 = 24+6-2,4=27,6
            if (inHours >= nHours)
            {
                var diff = 0.0;
                diff = inHours - nHours;
                Console.WriteLine($"Yes!{diff=Math.Floor(diff)} hours left.");
            }
            else
            {
                var diff = 0.0;
                diff = nHours - inHours;//99-27.6=71.4
                Console.WriteLine($"Not enough time!{diff = Math.Ceiling(diff)} hours needed.");
            }

Тагове:
0
Programming Basics 27/11/2016 23:24:10
StefkaVasileva avatar StefkaVasileva 250 Точки

Във втория случай не трябва да използваш Math.Celing. Вместо това опитай {diff = (int)(diff)} или директно си запиши отговора и променлива от тип int. 

0
george_gramatikov avatar george_gramatikov 1 Точки

 {diff = (int)(diff)}  с това отново ми го закръгля към 71

0
alisa_terzieva avatar alisa_terzieva 121 Точки

Здравей, 

Закръглят се часовете за работа преди да се пресметне разликата между необходимите и изработените часове, т.е. трябва да закръглиш inHours, а не крайния резултат при печатането. Действително в условието не е уточнено кое от двете се закръгля.

0
george_gramatikov avatar george_gramatikov 1 Точки

Благодаря закръглих преди да направя сметките и стана.

0
AlucardDracula avatar AlucardDracula 416 Точки
using System;

namespace Firm
{
    class Program
    {
        static void Main(string[] args)
        {
           var nHours = int.Parse(Console.ReadLine());
            var nDays = int.Parse(Console.ReadLine());
            var workers = int.Parse(Console.ReadLine());
            var inHours = 0.0;
            inHours = (nDays * 8) + ((workers * 2) * nDays) - (0.1*nDays*8); //Тук се получава: 3*8+1*2*3-0,1*3*8 = 24+6-2,4=27,6
            if (inHours >= nHours)
            {
                var diff = 0.0;
                diff = inHours - nHours;
                Console.WriteLine("Yes!"+ Math.Floor(diff)+" hours left.");
            }
            else
            {
                var diff = 0.0;
                diff = nHours - inHours;//99-27.6=71.4
                Console.WriteLine("Not enough time!" + Math.Ceiling(diff)+ " hours needed.");
            }
        }
    }
}

много малка редакция и при мен работи :) 100 от 100.

0
Terziyski avatar Terziyski 54 Точки

Ето и едно по-кратко решение , което дава също 100/100 точки в Judge System . Math.Ceiling и Math.Floor са достатъчни.

http://pastebin.com/gBFFsWnK

Поздрави!

0
g_todorov avatar g_todorov 106 Точки

Ето и едно решение с дълги, но "говорящи" променливи  от мен:

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

namespace _02.Harvest
{
    class Program
    {
        static void Main(string[] args)
        {
            var neededHours = int.Parse(Console.ReadLine());
            var days = int.Parse(Console.ReadLine());
            var overtimeWorkers = int.Parse(Console.ReadLine());

            var realDays = days * 0.9;
            var workingHours = Math.Floor(realDays * 8);
            var overtime = overtimeWorkers * 2 * days;
            var totalWorkingHours = workingHours + overtime;
            
            if (totalWorkingHours>= neededHours)
            {
                var leftHours = totalWorkingHours - neededHours;
                Console.WriteLine("Yes!{0} hours left.", leftHours);
            }
            else
            {
                var insufficientHours = neededHours - totalWorkingHours;
                Console.WriteLine("Not enough time!{0} hours needed.", insufficientHours);
            }
        }
    }
}

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