Menu
Coddy logo textTech

合計金額の計算

CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 35/65。

challenge icon

チャレンジ

簡単

ショッピングカート内のすべての商品の合計金額を計算する機能を実装して、ショッピングカート計算機プロジェクトを継続するプログラムを作成してください。前回のレッスンのカート管理を基に、プログラムは以下のことを行う必要があります:

  1. 既存の商品カタログの Map と、前回のセットアップで作成されたショッピングカートの List を使用する
  2. 顧客がカートに追加したい商品を表す複数の文字列入力を読み取る(入力は "cart_done" を受け取ったときに終了する)
  3. 各商品について、containsKey() を使用して商品カタログに存在するかどうかを確認する
  4. 商品が存在する場合は、add() メソッドを使用してショッピングカートの List に追加する
  5. カートのリストを反復処理し、商品マップで各商品の価格を検索して、合計金額を計算する
  6. すべての価格を合算して、最終的な合計金額を算出する
  7. カート計算レポートを、以下に示す正確な形式で表示する

例えば、店に "Apple"1.50"Banana"0.80"Orange"2.00"Milk"3.25 という商品があり、顧客が "Apple""Banana""Apple""Milk" を追加したい場合、プログラムは次のように出力する必要があります:

Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Milk': Item added to cart successfully
Cart Contents: [Apple, Banana, Apple, Milk]
Cost Calculation:
Apple: $1.50
Banana: $0.80
Apple: $1.50
Milk: $3.25
Total Cost: $7.05
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 0
Cart Status: Ready for checkout

店に "Laptop"999.99"Mouse"25.50"Keyboard"75.00 という商品があり、顧客が "Mouse""Keyboard""Mouse""Monitor" を追加したい場合、プログラムは次のように出力する必要があります:

Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Cart Contents: [Mouse, Keyboard, Mouse]
Cost Calculation:
Mouse: $25.50
Keyboard: $75.00
Mouse: $25.50
Total Cost: $126.00
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 1
Cart Status: Ready for checkout

店に "Novel"12.99"Magazine"4.50"Textbook"89.00 という商品があり、顧客が "Novel""Magazine""Novel""Textbook""Dictionary" を追加したい場合、プログラムは次のように出力する必要があります:

Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Textbook': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cost Calculation:
Novel: $12.99
Magazine: $4.50
Novel: $12.99
Textbook: $89.00
Total Cost: $119.48
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 1
Cart Status: Ready for checkout

プログラムは、ショッピングカートリストの各アイテムを反復処理し、商品カタログマップでその価格を検索し、その価格を累計に加算する必要があります。ループを使用して各カートアイテムを処理し、合計金額を蓄積してください。コスト計算フェーズでは、各アイテムの個別の価格を表示してください。すべての価格は、小数点以下ちょうど2桁を表示するようにフォーマットしてください。入力形式は、カートに追加するアイテム名で、"cart_done" で終わります。

自分で試してみよう

import 'dart:io';

void main() {
  // Product catalog with items and prices
  Map<String, double> productCatalog = {
    'Apple': 1.50,
    'Banana': 0.80,
    'Orange': 2.00,
    'Milk': 3.25,
    'Laptop': 999.99,
    'Mouse': 25.50,
    'Keyboard': 75.00,
    'Novel': 12.99,
    'Magazine': 4.50,
    'Textbook': 89.00
  };
  
  // Shopping cart to store selected items
  List<String> shoppingCart = [];
  
  // Counters for tracking operations
  int successfulAdditions = 0;
  int itemsNotFound = 0;
  
  print("Shopping Cart Operations:");
  
  // Read items until "cart_done" is received
  String? item;
  while ((item = stdin.readLineSync()) != "cart_done") {
    if (item != null) {
      if (productCatalog.containsKey(item)) {
        shoppingCart.add(item);
        successfulAdditions++;
        print("Adding '$item': Item added to cart successfully");
      } else {
        itemsNotFound++;
        print("Adding '$item': Item not available in store");
      }
    }
  }
  
  // Display cart contents
  print("Cart Contents: $shoppingCart");
  
  // Calculate unique products
  Set<String> uniqueProducts = shoppingCart.toSet();
  
  // Display cart summary
  print("Cart Summary:");
  print("Total items in cart: ${shoppingCart.length}");
  print("Unique products in cart: ${uniqueProducts.length}");
  print("Items successfully added: $successfulAdditions");
  print("Items not found: $itemsNotFound");
  print("Cart Status: Ready for checkout");
}

論理とフローのすべてのレッスン