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

معالجة الأخطاء

جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 85 من 88.

challenge icon

التحدي

سهل

أكمل متتبع المصاريف اليومية (Daily Expense Tracker) عن طريق إضافة معالجة الأخطاء لخيارات القائمة غير الصالحة.

يجب أن يقوم برنامجك بما يلي:

  1. تهيئة مصفوفة فارغة تسمى expenses
  2. إنشاء loop do يعرض القائمة ويقرأ مدخلات المستخدم
  3. عندما يدخل المستخدم "1"، اطلب اسم المصروف والمبلغ، وأنشئ hash بمفاتيح :name و :amount، وأضفه إلى مصفوفة expenses، واطبع Expense added!
  4. عندما يدخل المستخدم "2"، اعرض جميع المصاريف أو رسالة في حال عدم وجود أي منها
  5. عندما يدخل المستخدم "3"، احسب واعرض المجموع والمعدل لجميع المصاريف، أو رسالة في حال عدم وجود أي منها
  6. عندما يدخل المستخدم "4"، امسح جميع المصاريف من المصفوفة واطبع All expenses cleared!
  7. عندما يدخل المستخدم "5"، اطبع Goodbye! واخرج من الحلقة (loop)
  8. لأي إدخال آخر، اطبع: Invalid option. Please try again.

يجب أن تظهر القائمة تماماً كما في السابق:


--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: 

على سبيل المثال، إذا كانت المدخلات هي 7، abc، ثم 5 (خياران غير صالحين، ثم الخروج)، يجب أن تكون النتيجة:


--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Invalid option. Please try again.

--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Invalid option. Please try again.

--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Goodbye!

إذا كانت المدخلات هي 1، Coffee، 4.5، 6، 2، ثم 5 (إضافة مصروف، خيار غير صالح، عرض، خروج)، يجب أن تكون النتيجة:


--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Expense name: Amount: Expense added!

--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Invalid option. Please try again.

--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: 
--- Your Expenses ---
Coffee: $4.5

--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Goodbye!

جرّب بنفسك

expenses = []

loop do
  puts "--- Expense Tracker ---"
  puts "1. Add Expense"
  puts "2. View Expenses"
  puts "3. Total & Average"
  puts "4. Clear All"
  puts "5. Exit"
  print "Choose an option: "
  
  choice = gets.chomp
  
  if choice == "1"
    print "Expense name: "
    name = gets.chomp
    print "Amount: "
    amount = gets.chomp.to_f
    expenses << { name: name, amount: amount }
    puts "Expense added!"
  elsif choice == "2"
    if expenses.empty?
      puts "No expenses recorded yet."
    else
      expenses.each do |expense|
        puts "#{expense[:name]}: $#{expense[:amount]}"
      end
    end
  elsif choice == "3"
    if expenses.empty?
      puts "No expenses to calculate."
    else
      total = expenses.sum { |expense| expense[:amount] }
      average = total / expenses.length
      puts "Total: $#{total}"
      puts "Average: $#{average}"
    end
  elsif choice == "4"
    expenses.clear
    puts "All expenses cleared!"
  elsif choice == "5"
    puts "Goodbye!"
    break
  end
  
  puts ""
end

جميع دروس الأساسيات