Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

بيع عنصر

جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 52 من 66.

challenge icon

التحدي

سهل

ستتلقى خمسة مدخلات. المدخل الأول هو اسم العنصر المراد بيعه. المدخل الثاني هو الكمية المراد بيعها. المدخل الثالث هو قائمة بأسماء العناصر في المخزون مفصولة بفاصلة. المدخل الرابع هو قائمة بالأسعار المقابلة لكل عنصر مفصولة بفاصلة. المدخل الخامس هو قائمة بالكميات المقابلة لكل عنصر مفصولة بفاصلة. قم ببناء HashMap لتخزين بيانات المخزون حيث يكون المفتاح هو اسم العنصر والقيمة هي "tuple" تحتوي على السعر والكمية (f64, i32). ثم حاول بيع الكمية المطلوبة من العنصر.

المتطلبات:

  • استيراد HashMap من std::collections
  • قراءة المدخل الأول (اسم العنصر المراد بيعه) وإزالة المسافات البيضاء
  • قراءة المدخل الثاني (الكمية المراد بيعها) وإزالة المسافات البيضاء
  • تحويل الكمية المراد بيعها إلى i32
  • قراءة المدخل الثالث (أسماء العناصر المفصولة بفاصلة) وإزالة المسافات البيضاء
  • قراءة المدخل الرابع (الأسعار المفصولة بفاصلة) وإزالة المسافات البيضاء
  • قراءة المدخل الخامس (الكميات المفصولة بفاصلة) وإزالة المسافات البيضاء
  • إنشاء HashMap<String, (f64, i32)> قابل للتعديل (mutable) للمخزون
  • تقسيم أسماء العناصر بواسطة الفواصل
  • تقسيم الأسعار بواسطة الفواصل وتحويل كل منها إلى f64
  • تقسيم الكميات بواسطة الفواصل وتحويل كل منها إلى i32
  • إدراج كل عنصر في المخزون مع السعر والكمية المقابلين له كـ "tuple"
  • استخدام .get() للتحقق مما إذا كان العنصر المطلوب موجوداً في المخزون
  • استخدام تعبير match للتعامل مع الـ Option الذي يرجعه .get()
  • في حالة Some:
    • استخراج السعر والكمية الحالية من الـ "tuple"
    • التحقق مما إذا كانت الكمية الحالية أكبر من أو تساوي الكمية المراد بيعها
    • إذا كانت الإجابة نعم:
      • حساب الكمية الجديدة بطرح الكمية المراد بيعها من الكمية الحالية
      • حساب السعر الإجمالي بضرب سعر العنصر في الكمية المراد بيعها
      • استخدام .insert() لتحديث المخزون بالكمية الجديدة
      • طباعة: Sold [quantity_to_sell] [item_name]
      • طباعة: Total: $[total_price]
      • طباعة: Remaining stock: [new_quantity]
    • إذا كانت الإجابة لا (مخزون غير كافٍ):
      • طباعة: Insufficient stock for [item_name]
      • طباعة: Available: [current_quantity]
  • في حالة None، طباعة: [item_name] is not in stock

الإدخال:

  • السطر الأول: اسم العنصر المراد بيعه (مثلاً، Mouse)
  • السطر الثاني: الكمية المراد بيعها (مثلاً، 10)
  • السطر الثالث: أسماء العناصر مفصولة بفاصلة (مثلاً، Laptop,Mouse,Keyboard)
  • السطر الرابع: الأسعار مفصولة بفاصلة (مثلاً، 999.99,25.50,75.00)
  • السطر الخامس: الكميات مفصولة بفاصلة (مثلاً، 15,50,30)

المخرجات:

  • إذا كان العنصر موجوداً وكان هناك مخزون كافٍ:
    • السطر الأول: Sold [quantity_to_sell] [item_name]
    • السطر الثاني: Total: $[total_price]
    • السطر الثالث: Remaining stock: [new_quantity]
  • إذا كان العنصر موجوداً ولكن المخزون غير كافٍ:
    • السطر الأول: Insufficient stock for [item_name]
    • السطر الثاني: Available: [current_quantity]
  • إذا كان العنصر غير موجود: [item_name] is not in stock

جرّب بنفسك

use std::collections::HashMap;
use std::io;

fn main() {
    // قراءة المدخلات
    let mut item_to_sell = String::new();
    io::stdin().read_line(&mut item_to_sell).expect("Failed to read line");
    let item_to_sell = item_to_sell.trim();
    
    let mut quantity_to_sell_input = String::new();
    io::stdin().read_line(&mut quantity_to_sell_input).expect("Failed to read line");
    let quantity_to_sell: i32 = quantity_to_sell_input.trim().parse().expect("Invalid number");
    
    let mut item_names_input = String::new();
    io::stdin().read_line(&mut item_names_input).expect("Failed to read line");
    let item_names_input = item_names_input.trim();
    
    let mut prices_input = String::new();
    io::stdin().read_line(&mut prices_input).expect("Failed to read line");
    let prices_input = prices_input.trim();
    
    let mut quantities_input = String::new();
    io::stdin().read_line(&mut quantities_input).expect("Failed to read line");
    let quantities_input = quantities_input.trim();
    
    // TODO: اكتب الكود الخاص بك أدناه
    // إنشاء HashMap لتخزين المخزون
    // معالجة المدخلات وبناء المخزون
    // التحقق مما إذا كان العنصر موجوداً ومعالجة عملية البيع
    
}

جميع دروس Logic & Flow