2017-10-06 8 views
-2

私はレジスターからの金額をすばやく計算するのに役立つ現金計算機アプリを作ろうとしています。たとえば、$ 20ドル紙幣をすべて払う代わりに、私が持っている20ドルのシングルスをいくつでも入力するだけで、合計額を計算することができます。これは私のコードですが、Structと関数を使用しましたが、コードを実行する際にエラーが発生しました。おかげ構造体と関数を使用するときに問題が3つあります

struct Money { 
    oneCent: Double 
    fiveCent: Double 
    tenCent: Double 
    quater: Double 
    fiftyCent: Double 
    rollCent: Double 
    rollFive: Double 
    rollTen: Double 
    rollQuater: Double 
    dollarCoin: Double 
    dollar: Double 
    fiveDollar: Double 
    tenDollar : Double 
    twentyDollar: Double 
    fiftyDollar: Double 
    hundredDollar: Double 
    oneCent: Double 
} 

func moneyCalcualate (value at : Money, copies: Double){ 

    var total : Double = 0.00 
    for i in at{ 
     switch i { 
      case oneCent : total = 0.01 * copies 
      case fiveCent : total = 0.05 * copies 
      case tenCent : total = 0.10 * copies 
      case quater : total = 0.25 * copies 
      case fiftyCent : total = 0.50 * copies 
      case rollCent: total = 0.01 * copies 
      case rollFive: total = 0.01 * copies 
      case rollTen : total = 0.01 * copies 
      case rollQuater : total = 10.00 * copies 
      case dollarCoin : total = 1.00 * copies 
      case dollar : total = 1.00 * copies 
      case fiveDollar : total = 5.00 * copies 
      case tenDollar : total = 10.00 * copies 
      case twentyDollar : total = 20.00 * copies 
      case fiftyDollar : total = 50.00 * copies 
      case hundredDollar : total = 100.00 * copies 

     } 
    } 
    return total 
} 


moneyCalcualate(value: quater, copies: 2.0) 
+0

このコードもコンパイルされません。ここにはかなりの誤りがあります。具体的には、どのようなエラー、具体的には、あなたが援助を必要としているか、もしあれば、すでに試したことを教えてください。 –

+0

どのようにしてforループを「money at value:money」変数から開始できますか?moneyCalcualate関数の変数? –

+0

あなたは 'oneCentせてみましょうか、VAR –

答えて

0
あなたはこの方法でそれを試すことができます

..

enum Money { 
case oneCent 
case fiveCent 
case tenCent 
case quater 
case fiftyCent 
case rollCent 
case rollFive 
case rollTen 
case rollQuater 
case dollarCoin 
case dollar 
case fiveDollar 
case tenDollar 
case twentyDollar 
case fiftyDollar 
case hundredDollar 



static let all : [Money] = [.oneCent , .fiveCent , .tenCent , .quater, .fiftyCent, .rollCent, .rollFive, .rollTen, .rollQuater, .dollarCoin, .dollar, .fiveDollar, .tenDollar, .twentyDollar, .fiftyDollar, .hundredDollar] 
} 

func moneyCalcualate (value at : Money, copies: Double) -> Double{ 


var total : Double = 0.00 


switch at { 
case .oneCent : total = 0.01 * copies 
case .fiveCent : total = 0.05 * copies 
case .tenCent : total = 0.10 * copies 
case .quater : total = 0.25 * copies 
case .fiftyCent : total = 0.50 * copies 
case .rollCent: total = 0.01 * copies 
case .rollFive: total = 0.01 * copies 
case .rollTen : total = 0.01 * copies 
case .rollQuater : total = 10.00 * copies 
case .dollarCoin : total = 1.00 * copies 
case .dollar : total = 1.00 * copies 
case .fiveDollar : total = 5.00 * copies 
case .tenDollar : total = 10.00 * copies 
case .twentyDollar : total = 20.00 * copies 
case .fiftyDollar : total = 50.00 * copies 
case .hundredDollar : total = 100.00 * copies 

} 

return total 
} 


moneyCalcualate(value: .quater, copies: 2.0) 

はそれが役に立てば幸い!

+0

ありがとうエージェントsmith。静的なletの目的は何ですか?これは私が初めてそれを見る時間です。私たちのお金の列挙のすべての値を配列に変換しますか? – Perewillz

+0

私はenumのすべての値の配列を作っているので、それらを繰り返し処理できます。 @Perewillz –

1

これはenumの典型的なケースです。ケースとしてすべてのお金の種類を宣言し、生の値をそれぞれに割り当てます。次に、現在の型の指定されたコピー数の合計を返す関数を作成できます。ここで

は例です:

enum Money: Double { 
    case oneCent = 0.01 
    case fiveCent = 0.05 
    case tenCent = 0.1 
    case quarter = 0.25 

    func total(numberOfCopies: Int) -> Double { 
     return self.rawValue * Double(numberOfCopies) 
    } 
} 

あなたはこのようにそれを呼び出す:

let moneyInFiveCents = Money.fiveCent 
let fiveCents = moneyInFiveCents.total(numberOfCopies: 5) 
print(fiveCents) 
// prints 0.25 

let moneyInQuarters = Money.quarter 
let quarters = moneyInQuarters.total(numberOfCopies: 5) 
print(quarters) 
// prints 1.25 

print(fiveCents + quarters) 
// prints 1.5 
関連する問題