c#decimal,ulong,计算数量

时间:2016-04-16 18:23:04

标签: c# decimal ulong

我有这个代码用于解决我的问题。我几乎可以通过一些测试得到略有不同的结果。如您所见,变量c应为“十进制”。然而,当它乘以变量“n”时。 这就是问题所在:

你的任务是编写一个程序来计算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 个答案:

答案 0 :(得分: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);
            }
        }
    }
}