Menu
Coddy logo textTech

הוספת פריטים לעגלה

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

challenge icon

אתגר

קל

צרו תוכנית שמממשת את הפונקציונליות להוספת פריטים לעגלת קניות. התוכנית שלכם צריכה להשתמש ב־Map של קטלוג מוצרים שמוגדר בקוד מראש ובעגלת קניות מסוג List ריקה, ואז לעבד קלט של פריטים מהמשתמש.

הגדירו ישירות בקוד את קטלוג המוצרים הבא:

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
};

התוכנית שלכם צריכה:

  1. להשתמש ב־Map של קטלוג המוצרים שהוגדר למעלה ובעגלת קניות מסוג List ריקה
  2. לקרוא כמה מחרוזות קלט שמייצגות פריטים שלקוחות רוצים להוסיף לעגלה (הקלט יסתיים כשתקבלו "cart_done")
  3. לבדוק עבור כל פריט אם הוא קיים בקטלוג המוצרים באמצעות containsKey()
  4. אם הפריט קיים, להוסיף אותו לעגלת הקניות מסוג List באמצעות המתודה add()
  5. אם הפריט אינו קיים, לדלג עליו ולהמשיך בעיבוד
  6. לעקוב אחר הוספות מוצלחות וניסיונות כושלים
  7. להציג דוח ניהול עגלת הקניות בפורמט המדויק שמוצג למטה

לדוגמה, אם הלקוחות רוצים להוסיף "Apple", "Bread", "Banana", "Apple", "Juice", התוכנית שלכם צריכה להציג:

Shopping Cart Operations:
Adding 'Apple': Item added to cart successfully
Adding 'Bread': Item not available in store
Adding 'Banana': Item added to cart successfully
Adding 'Apple': Item added to cart successfully
Adding 'Juice': Item not available in store
Cart Contents: [Apple, Banana, Apple]
Cart Summary:
Total items in cart: 3
Unique products in cart: 2
Items successfully added: 3
Items not found: 2
Cart Status: Ready for checkout

אם הלקוחות רוצים להוסיף "Mouse", "Monitor", "Keyboard", "Mouse", התוכנית שלכם צריכה להציג:

Shopping Cart Operations:
Adding 'Mouse': Item added to cart successfully
Adding 'Monitor': Item not available in store
Adding 'Keyboard': Item added to cart successfully
Adding 'Mouse': Item added to cart successfully
Cart Contents: [Mouse, Keyboard, Mouse]
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", "Dictionary", "Magazine", "Novel", "Comic", "Textbook", התוכנית שלכם צריכה להציג:

Shopping Cart Operations:
Adding 'Novel': Item added to cart successfully
Adding 'Dictionary': Item not available in store
Adding 'Magazine': Item added to cart successfully
Adding 'Novel': Item added to cart successfully
Adding 'Comic': Item not available in store
Adding 'Textbook': Item added to cart successfully
Cart Contents: [Novel, Magazine, Novel, Textbook]
Cart Summary:
Total items in cart: 4
Unique products in cart: 3
Items successfully added: 4
Items not found: 2
Cart Status: Ready for checkout

התוכנית שלכם חייבת להשתמש ב־containsKey() כדי לוודא שכל פריט קיים בקטלוג המוצרים לפני הוספתו לעגלה. השתמשו במתודה add() כדי להוסיף פריטים תקינים לעגלת הקניות מסוג List. ספרו את מספר הפריטים הכולל בעגלה באמצעות המאפיין length, וקבעו מהם המוצרים הייחודיים על ידי המרת העגלה ל־Set ובדיקת האורך שלו. עקבו אחר מספר ההוספות המוצלחות וגם אחר הפריטים שלא נמצאו בקטלוג. פורמט הקלט יהיה: שמות הפריטים להוספה לעגלה, והקלט יסתיים ב־"cart_done".

נסו בעצמכם

import 'dart:io';

void main() {
  // Read store name
  String? storeName = stdin.readLineSync();
  
  // Initialize data structures
  Map<String, double> products = {};
  List<String> shoppingCart = [];
  
  // Read products until "products_done"
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "products_done") {
      break;
    }
    String productName = input!;
    String? priceInput = stdin.readLineSync();
    double price = double.parse(priceInput!);
    
    // Add product to map
    products[productName] = price;
  }
  
  // Calculate statistics
  double totalPrice = 0;
  double maxPrice = 0;
  double minPrice = double.infinity;
  String mostExpensiveItem = '';
  String cheapestItem = '';
  
  for (String productName in products.keys) {
    double price = products[productName]!;
    totalPrice += price;
    
    if (price > maxPrice) {
      maxPrice = price;
      mostExpensiveItem = productName;
    }
    
    if (price < minPrice) {
      minPrice = price;
      cheapestItem = productName;
    }
  }
  
  double averagePrice = totalPrice / products.length;
  
  // Print the store setup report
  print('Store: $storeName');
  print('Product Catalog Setup:');
  print('Available Products: $products');
  print('Shopping Cart Initialized: $shoppingCart');
  print('System Status:');
  print('Total products available: ${products.length}');
  print('Cart status: Empty');
  print('Most expensive item: $mostExpensiveItem (\$${maxPrice.toStringAsFixed(2)})');
  print('Cheapest item: $cheapestItem (\$${minPrice.toStringAsFixed(2)})');
  print('Average product price: \$${averagePrice.toStringAsFixed(2)}');
  print('Setup Status: Shopping cart system ready for customers');
}

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

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