对如何去做这个程序感到困惑

时间:2012-09-23 23:22:58

标签: vb.net variables

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

  • .10单页。
  • 每张
  • .055,单位为100.
  • 每张
  • .04,以500的倍数。
  • 每张
  • .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

3 个答案:

答案 0 :(得分:1)

为什么不循环遍历每个数量(例如1000,500,100,1),并且用户在变量中指定的数量不存在,逻辑就像这样:

预定义的变量:no_of_sheets(用户输入),working_amount = no_of_sheets,current_index = 0,count = 0,amount(array)=(1000,500,100,1),cost =(0.03,0.04,0.055,0.1 ),总=(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

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

有帮助的HOpe。

答案 1 :(得分: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

答案 2 :(得分:0)

您的作业问题是Knapsack problem的示例,但幸运的是它的一个非常简单的变体。

您不一定需要使用模运算符 - 您可以迭代执行。从最昂贵的产品(提供最佳的每件物品价格比率)开始,然后用你的起始货币“尽可能多地购买”(继续减去钱,直到你买不起),然后继续到下一个有礼的产品,重复,直到你买不起任何东西。