2016-04-16 11 views
-1

У меня есть этот код для моей проблемы. Я почти нахожусь для некоторых тестов, я получаю несколько разные результаты. Как вы увидите, переменная c должна быть «десятичной». Однако при умножении его на переменную «n». В этом заключается проблема:C# decimal, ulong, вычислительные величины

Ваша задача - написать программу для расчета количества тортов, которые Ivancho может сделать в этот день, и цены за торт. Вам будут даны некоторые цифры. Количество тортов Ivancho хочет в этот день, килограммы муки необходимо сделать один пирог, килограммы муки, которые поставщик может вам дать, количество трюфелей вы можете купить и цену за каждый трюфель. Если у Ivancho достаточно муки, чтобы сделать количество пирожных, которые он хочет, он сделает именно этой суммы, оставшаяся мука будет отброшена, и вы должны напечатать на консоли «Все доступные продукты, цена на пирог: {цена одного пирога }». В качестве альтернативы, если муки недостаточно, вы должны округлить количество тортов, которые могут быть изготовлены на целое число, и распечатать их на консоли в формате «Можно изготовить только {количество тортов, которые могут быть изготовлены) торты, необходимо {килограмм муки необходимо} кг больше муки ", где нужны килограммы муки, - это разница между килограммами муки , необходимыми для того, чтобы сделать количество тортов, которые хотел Иванчо, и килограммы муки. Вход Входные данные следует считывать с консоли. Он состоит из пяти входных значений, каждый на отдельной строке: • Количество n - количество тортов, которое хочет Ivancho. • Количество c - килограммов муки, необходимых для приготовления одного пирога. • Число f - килограммов муки. • Число t - количество доступных трюфелей. • Номер p - цена одного трюфеля.

 Если муки недостаточно, чтобы сделать количество тортов, Ivancho хочет напечатать на консоли: o «Можно сделать только {количество тортов, которые могут быть изготовлены) торты, необходимо {килограмм муки} кг больше муки "  Если муки достаточно:  Количество тортов, которые могут быть изготовлены, должно быть целым числом; цена пирога и килограммы необходимой муки должны быть округлены до двух цифр после десятичной точки. Ограничения  Число n будет действительным целым числом в диапазоне [1 ... 18 446 744 073 709 551 615]  Число c будет числом с плавающей запятой в диапазоне [0 ... 7.9 x 1028].  Числа f, t и p будут действительными целыми числами в диапазоне [0 ... 4 294 967 295].  с использованием системы; с использованием System.Collections.Generic; с использованием System.Linq; с использованием System.Text; с использованием System.Threading.Tasks;

namespace CakeTycoon 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var n = ulong.Parse(Console.ReadLine()); // amount of cakes George wants 
      var c = decimal.Parse(Console.ReadLine()); // kg of fllour needed to make 1 cake 

      var f = uint.Parse(Console.ReadLine()); // kg of flour available 
      var t = uint.Parse(Console.ReadLine()); // amount of truffles available 
      var p = uint.Parse(Console.ReadLine()); // price of one truffle 


      var truffelCost = t * p; // total price of truffles 

      var cakesCanBeMade = Math.Floor(f/c); 

      var cakePrice = (truffelCost/n) * 1.25; 
      var flourNeeded = 0.00; 
      var totalFlour = n * c; 

      if (cakesCanBeMade >= n) 
      { 
       Console.WriteLine("All products available, price of a cake: {0}", cakePrice); 

      } 
      else if (cakesCanBeMade < n) 
      { 
       flourNeeded = totalFlour - f ; 
       Console.WriteLine("Can make only {0} cakes, need {1}kg more flour", cakesCanBeMade,flourNeeded); 
      } 

     } 
    } 
} 
+1

Привет, может быть, вы можете точечную проблему немного более – Stefan

+0

Что вы хотите? Может быть вам нужно определить тип insted var или использовать класс System.Convert – askeet

+0

Я использовал это сейчас, и он работает .. изменил имя переменных тоже ... ulong truffleCost = (ulong) трюфели * trufflePrice; – user3376064

ответ

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

namespace CakeTycoon 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      ulong cakesWanted = ulong.Parse(Console.ReadLine()); 
      double kilosPerCake = double.Parse(Console.ReadLine()); 
      uint flourKilos = uint.Parse(Console.ReadLine()); 
      uint truffles = uint.Parse(Console.ReadLine()); 
      uint trufflePrice = uint.Parse(Console.ReadLine()); 

      ulong truffleCost = (ulong)truffles * trufflePrice; 
      double cakesProduced = Math.Floor(flourKilos/kilosPerCake); 

      if (cakesProduced < cakesWanted) 
      { 
       double kilogramsNeeded = (kilosPerCake * cakesWanted) - flourKilos; 
       Console.WriteLine("Can make only {0} cakes, need {1:F2} kg more flour", cakesProduced, kilogramsNeeded); 

      } 
      else 
      { 
       double cakeCost = ((double)truffleCost/cakesWanted) * 1.25d; 
       Console.WriteLine("All products available, price of a cake: {0:F2}", cakeCost); 
      } 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^