VB中的模数除法

时间:2012-09-19 14:52:30

标签: vb.net visual-studio-2010

我对此感到有些不知所措。问题和我的代码的开头如下。有人能告诉我这是否走在正确的轨道上?如果没有,你能帮忙吗?任何建议表示赞赏。先感谢您。 (这不是我的最终代码,只是问题的开始)。

客户需要特定数量的纸张。纸上的费用是0.10美元 对于单张纸,每张0.055美元的金额为100张的倍数,0.04美元 每张500张的倍数和每张0.03美元的倍数1000倍 床单。开发一个解决方案来计算包的类型和数量 考虑到纸张的数量,客户应该购买的金额最少 客户的需求。例如,如果客户需要380张,那么她的金额 当以100的倍数购买时,将支付22.00美元。但是,如果 客户买了500张,费用为20.00美元。因此,这将是成本 有效的客户购买500张包。 (提示:使用模数除法(Mod)来找到除法的余数)。

Imports System

Module Paper

    Sub Main()

      Dim Name as String
      Dim OrderNumber as String
      Dim Paper as Integer
      Dim Thousandpaper as Integer
      Dim FiveHundredPaper as Integer
      Dim FirstCut as Integer
      Dim SecondCUt as Integer

      'User Input Begins Here:
      Console.WriteLine("Hello! What is your name?")
      Name = console.readline()

      Console.WriteLine("Please enter a order number:")
      OrderNumber = console.readline()

      Console.WriteLine("Finally ,how much paper would you like?")
      Paper = console.readline()

      If (Paper > 1000)
        Thousandpaper = (Paper / 1000)
      End If

      If (Thousandpaper) > Paper Then
        GoTo 44
      End If

      FirstCut = (Paper mod 1000)

      If (FirstCut > 500)
        FiveHundredPaper= (FirstCut / 500)
      End If

      SecondCut = (FirstCut / 500)      

      44: Console.WriteLine("1000 paper pack:")
      Console.WriteLine(Thousandpaper)      
      Console.WriteLine("500 paper pack:")
      Console.WriteLine(FirstCut)                  

    End Sub

End Module

2 个答案:

答案 0 :(得分:6)

让我给你一些一般性的提示:

  1. VB.NET中的模数是使用Mod运算符完成的。这回答了你标题中的问题,但它不能帮助你解决眼前的问题。
  2. 停止编码。拿一张纸,从数学的角度尝试解决问题。尝试找到问题陈述中请求的优化算法(伪代码)。
  3. 只有拥有算法后,您才能确定它是正确的,请以您选择的语言(VB.NET)开始实现它。

答案 1 :(得分:1)

修改

首先听取@Heinzi的回答是有意义的。我只能对“自上而下”的方法做出明智的尝试,因为我已经意识到核心算法应该如何构建。


这是一些让你入门的面向对象。

Public Structure PaperPackage
    Public Size As Integer
    Public PricePerSheet As 
End Structure

Dim availablePackages = New List(of PaperPackage) _
    { _
        New PaperPackage With { .Size = 1000, .PricePerSheet = 0.03 }, _
        New PaperPackage With { .Size = 500, .PricePerSheet = 0.04 }, _
        New PaperPackage With { .Size = 100, .PricePerSheet = 0.055 }, _
        New PaperPackage With { .Size = 1, .PricePerSheet = 0.1 } _
    }

然后你可能想写一个带有这样的签名的函数,

Public Shared Function CheapestPaperChoices( _
    availableChoices As IList(of PaperPackage), _
    requiredSheets As Integer) As IDictionary(Of PaperPackage, Integer)

哪个会返回IDictionary,其中包含所需的每个纸质包裹以及数量的Integer计数。

为了提供更多帮助,你可以顺利找到,如果你写这个功能,

Public Structure PackagesThatFitResult
    Public Quantity As Integer
    Public NewRemainingSheets As Integer 
End Structure

Private Shared Function PackagesThatFit( _
    remainingSheets As Integer, _
    package As PaperPackage) As PackagesThatFitResult 

你可以在我上面指定的函数中迭代地调用它。

只是最后一个警告,你可能会觉得购买更大的包裹会有所收获,如果说,你的最后一张照片是49张。