【发布时间】:2016-08-02 08:02:32
【问题描述】:
这是我已经提交的练习,我想更好地了解我哪里出错了。该程序应该计算我们可以吃多少糖果以及剩下多少包装,假设有一个促销活动,对于 X 数量的包装我们可以获得 Y 个免费糖果,然后我们可以使用这些包装来获得额外数量的免费糖果,直到我们没有达到获得更多所需的金额。
我的解决方案适用于几种情况,但不适用于某些情况,例如:
对于 4 Wraps 获得 2 免费赠品,购买 8 = 13 Eaten 和 5 WrapLeft(应该是 14 Eaten 和 2 WrapsLeft)。
我已经阅读了很多次代码,但不知道是我设计的公式糟糕还是编码错误(尽管它编译正常)。我被困住了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace candy
{
class Program
{
static void Main(string[] args)
{
int Wrap = 0;
int Freebie = 0;
int TotalFreebie = 0;
int Buy = 0;
int Increment = 0;
int Eaten = 0;
int WrapsLeft = 0;
Console.WriteLine("Introduce amount of wraps");
Wrap = Int32.Parse(Console.ReadLine());
Console.WriteLine("Introduce number of freebies per wrap");
Freebie = Int32.Parse(Console.ReadLine());
Console.WriteLine("Introduce amount of candy bought");
Buy = Int32.Parse(Console.ReadLine());
TotalFreebie = (Buy / Wrap) * Freebie;
Eaten = Buy + TotalFreebie;
WrapsLeft = Eaten - Buy;
if (Freebie > Buy || Freebie >= Wrap)
{
Console.WriteLine("COMPANY GOES BANKRUPT");
Console.ReadLine();
}
else
{
if (TotalFreebie > Wrap)
{
do
{
TotalFreebie = (Buy / Wrap) * Freebie;
Increment = TotalFreebie / Wrap;
Increment++;
Eaten = Buy + TotalFreebie + Increment;
WrapsLeft = Eaten - (Buy + TotalFreebie);
} while (TotalFreebie > Wrap);
}
else
{
if (TotalFreebie == Wrap && Buy > Wrap)
{
TotalFreebie = (Buy / Wrap) * Freebie;
Eaten = Buy + TotalFreebie + Freebie;
WrapsLeft = Eaten - (Buy + TotalFreebie);
}
else
{
TotalFreebie = (Buy / Wrap) * Freebie;
Eaten = Buy + TotalFreebie;
WrapsLeft = Eaten - Buy;
}
}
TotalFreebie = (Buy / Wrap) * Freebie;
Eaten = Buy + TotalFreebie + (TotalFreebie / Wrap);
if (TotalFreebie > Wrap)
{
WrapsLeft = Eaten - (Buy + TotalFreebie);
}
else
{
WrapsLeft = Eaten - Buy;
}
Console.WriteLine("{0} {1}", Eaten, WrapsLeft);
Console.ReadLine();
}
}
}
}
【问题讨论】:
-
你试过调试你的代码吗?
-
是的,但我还是不太明白,我们仍然从伪代码开始使用 Visual Studio。
-
我仍然无法理解您的问题。我有点困惑。但是,我认为您的意思是您购买了一定数量的糖果,例如 8 个,您可以用 4 包吃过的糖果换取另外 2 个糖果,您可以继续这样做,直到用完包装.而你所需要的,是原始数量的糖果一共能得到多少糖果,交易后还剩下多少包装纸。这是正确的吗?
-
没错,“Eaten”·是“最终消耗的糖果数量(购买+赠品总数”,WrapLeft 是“我将购买的糖果和包装纸交换后剩余的包装纸数量)我还可以用来为 Y 数量的包装器获得 X 数量的免费赠品的免费赠品”。
-
您的代码中有一些错误。变量 Compro 在哪里定义?你也拼错了一个 Frebie。
标签: c#