0

问题如下。客户需要特定数量的纸张。纸上的指控是:

  • .10 单张。
  • 每张 0.055 以 100 的倍数计算。
  • 每张 0.04 以 500 的倍数计算。
  • 每张 0.03 以 1000 的倍数计算。

我知道你必须在某处使用 mod 部门。我不确定我的变量是否设置正确,我的大脑快要融化了。伤心吧?哈哈。我将非常感谢一些帮助。干杯:)

Option Explicit On

Imports system

Module paperp
    Sub Main()

        Dim papercost As Double
        Dim onetpackage As Integer
        Dim fivehpackages As Integer
        Dim onehpackages As Integer
        Dim singlesheets As Integer

        Console.Writeline("Number of 1000 packages:")
        onetpackage = convert.toint32(Console.Readline())

        Console.Writeline("Number of 500 packages:")
        fivehpackages = convert.toint32(Console.Readline())

        Console.Writeline("Number of 100 packages:")
        onehpackages = convert.toint32(Console.Readline())

        Console.Writeline("Number of single sheets:")
        singlesheets = convert.toint32(console.Readline())

        Console.Out.Writeline("Number of 1000 packages:")
        Console.Out.Writeline(onetpackage)
        Console.Out.Writeline("Number of 500 packages:")
        Console.Out.Writeline(fivehpackages)
        Console.Out.Writeline("Number of 100 packages:")
        Console.Out.Writeline(onehpackages)
        Console.Out.Writeline("Number of single sheets:")
        Console.Out.Writeline(singlesheets)
        Console.Out.Writeline("Your total Cost is:")
        Console.Out.Writeline(papercost)

    End Sub
End Module
4

3 回答 3

1

为什么不循环遍历每个数量(例如 1000、500、100、1),并且用户在变量中指定的工作表数量,逻辑如下:

预定义变量:no_of_sheets(用户输入),working_amount = no_of_sheets,current_index = 0,count = 0,amounts(数组)= (1000, 500, 100, 1),costs = (0.03, 0.04, 0.055, 0.1),total = (0, 0, 0, 0)

While (working_amount > 0)
  if current_index < 4
    if (working_amount - amounts[current_index]) >= 0
      total[current_index]++
      working_amount = working_amount - amounts[current_index]
    else
      current_index++
    endif
  endif
endwhile

现在您有一个包含每个块数量的数组,例如 (1, 2, 3, 4) 的数组表示 1 x 1000 张、2 x 500、3 x 100、4 x 1

然后你可以将每一位乘以它们的价格。

希望有帮助。

于 2012-09-23T23:33:59.010 回答
1

使用该代码,您只需添加每个包裹的价格:

papercost = _
  0.03 * 1000.0 * onetpackage + _
  0.04 * 500 * fivehpackages + _
  0.055 * 100 * onehpackages + _
  0.1 * singlesheets

但是,为了使分配有意义,我认为您实际上应该只输入总张数,然后计算包数。您可以在计算包数后使用模数来计算剩余的工作表,但使用减法同样简单:

  onetpackage = Math.Floor(totalsheets / 1000)
  totalsheets -= onetpackage * 1000
于 2012-09-23T23:34:51.407 回答
0

你的作业问题是背包问题的一个例子,但幸运的是它的一个非常简单的变体。

您不一定需要使用模运算符 - 您可以迭代地进行。从最昂贵的产品开始(提供最佳的单品价格比),然后用你的起始资金“购买”尽可能多的产品(不断从钱中减去,直到你买不起),然后继续前进到下一个经济实惠的产品并重复,直到你买不起任何东西。

于 2012-09-23T23:33:36.230 回答