Menu
Coddy logo textTech

חישוב העלות הכוללת

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 35 מתוך 65.

challenge icon

אתגר

קל

צרו תוכנית שממשיכה את פרויקט מחשבון עגלת הקניות באמצעות מימוש הפונקציונליות לחישוב העלות הכוללת של כל הפריטים בעגלת הקניות. בהמשך לניהול העגלה מהשיעור הקודם, התוכנית שלכם צריכה:

  1. להשתמש ב־Map הקיים של קטלוג המוצרים וב־List המאוכלס של עגלת הקניות מההגדרה הקודמת
  2. לקרוא כמה קלטים מסוג מחרוזת שמייצגים פריטים שהלקוחות רוצים להוסיף לעגלה שלהם (הקלט יסתיים כשתקבלו את "cart_done")
  3. לבדוק עבור כל פריט אם הוא קיים בקטלוג המוצרים באמצעות containsKey()
  4. אם הפריט קיים, להוסיף אותו ל־List של עגלת הקניות באמצעות המתודה add()
  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");
}

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Dart אונליין