Професионална програма
Loading...
+ Нов въпрос
DimitarIvanov2989 avatar DimitarIvanov2989 -3 Точки

Cake Tysoon

Здравейте! Решавам първата задача от този изпит:

https://judge.softuni.bg/Contests/149/Programming-Basics-Exam-17-January-2016

, но по някаква причина има грешка в изчисленията. Според мен формулите ми са верни, та ще е нещо заради типовете данни. Ще съм благодарен ако ми разясните защо става така.

http://pastebin.com/WpxhpzfP

2 от тестовете - 

http://prntscr.com/ad0txe

http://prntscr.com/ad0u0n

0
Programming Basics
Mozez avatar Mozez 55 Точки

На местата където имаш работа с валута трябва да използваш променливи от тип decimal.

2
ArmenPotourlyan+deleted! avatar ArmenPotourlyan+deleted! 488 Точки

Освен забележката за decimal-a на колегата има и друг проблем:

Внимавай, когато умножаваш целочислени типове - може да се получи overflow преди да ги превърне в decimal или double.

uint a = ... ;
uint b = ... ;
decimal c = a * b ; (overflow !!!)

Решение на проблема е:

decimal c = (decimal)a * b;
 

 

3
vancho avatar vancho 430 Точки
  1.             ulong cakesWanted = ulong.Parse(Console.ReadLine());

  2.             decimal flourNeeded = double.Parse(Console.ReadLine());

  3.             uint flourAvailable = uint.Parse(Console.ReadLine());

  4.             uint truffles = uint.Parse(Console.ReadLine());

  5.             decimal trufflesPrice = uint.Parse(Console.ReadLine());

  6.  

  7.             decimal cakes = Math.Floor((decimal)flourAvailable / flourNeeded);

  8.             decimal TrufflesCost = (decimal)truffles * trufflesPrice;

  9.             decimal cakesPrice = TrufflesCost / (decimal)cakesWanted * 1.25;

  10.             decimal AdditionalFlour = (decimal)cakesWanted* flourNeeded - (decimal)flourAvailable;

Пробвай така :)

0