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

الكود النهائي

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

challenge icon

التحدي

سهل

ستتلقى أربعة مدخلات تمثل سير عمل كامل لقائمة المهام: أولاً، قائمة مهام أولية مفصولة بفاصلة؛ ثانياً، مهمة جديدة لإضافتها؛ ثالثاً، رقم المهمة المراد عرضها (فهرسة تبدأ من 1)؛ ورابعاً، رقم المهمة المراد إزالتها (فهرسة تبدأ من 1). قم بإنشاء مدير قائمة مهام كامل يعالج كل هذه العمليات ويعرض الحالة النهائية.

المتطلبات:

  • اقرأ المدخل الأول الذي يحتوي على أوصاف المهام المفصولة بفاصلة (على سبيل المثال، Buy groceries,Call dentist,Finish homework)
  • قم بتقسيم السلسلة النصية بواسطة الفواصل وأنشئ متجهًا قابلاً للتعديل (mutable vector) بهذه المهام الأولية
  • اقرأ المدخل الثاني وأضف هذه المهمة الجديدة إلى المتجه باستخدام .push()
  • اقرأ المدخل الثالث، وقم بتحويله إلى عدد صحيح (رقم المهمة المراد عرضها، يبدأ من 1)
  • اقرأ المدخل الرابع، وقم بتحويله إلى عدد صحيح (رقم المهمة المراد إزالتها، يبدأ من 1)
  • قم بإزالة المهمة المحددة عن طريق تحويل الفهرس الذي يبدأ من 1 إلى فهرس يبدأ من 0 واستخدام .remove()
  • اطبع Total tasks: X حيث X هو العدد النهائي للمهام
  • اطبع Viewing task: Y حيث Y هو رقم المهمة التي طُلب عرضها
  • قم بالمرور عبر قائمة المهام النهائية واطبع كل مهمة مع رقمها (يبدأ من 1)
  • بالنسبة للمهمة التي تطابق رقم العرض (بعد تعديلات الإزالة)، اطبع: [X] [task description] (selected)
  • بالنسبة لجميع المهام الأخرى، اطبع: [X] [task description]

المدخلات:

  • السطر الأول: أوصاف المهام مفصولة بفاصلة (على سبيل المثال، Buy groceries,Call dentist,Finish homework)
  • السطر الثاني: مهمة جديدة لإضافتها (على سبيل المثال، Study for exam)
  • السطر الثالث: عدد صحيح يمثل رقم المهمة المراد عرضها (فهرسة تبدأ من 1)
  • السطر الرابع: عدد صحيح يمثل رقم المهمة المراد إزالتها (فهرسة تبدأ من 1)

المخرجات:

  • السطر الأول: Total tasks: X حيث X هو العدد النهائي للمهام
  • السطر الثاني: Viewing task: Y حيث Y هو رقم العرض المطلوب
  • الأسطر التالية: كل مهمة مع رقمها بالتنسيق [X] [task description]
  • المهمة المحددة (التي تطابق رقم العرض) يجب أن يلحق بها (selected)

جرّب بنفسك

use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // قراءة المهام الأولية المفصولة بفواصل
    let initial_tasks = lines.next().unwrap().unwrap();
    
    // قراءة المهمة الجديدة لإضافتها
    let new_task = lines.next().unwrap().unwrap();
    
    // قراءة رقم المهمة المراد عرضها (يبدأ من 1)
    let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // قراءة رقم المهمة المراد إزالتها (يبدأ من 1)
    let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // TODO: اكتب الكود الخاص بك أدناه
    // 1. قم بتقسيم initial_tasks بواسطة الفواصل وإنشاء متجه (vector) قابل للتعديل
    // 2. أضف new_task إلى المتجه
    // 3. قم بإزالة المهمة عند remove_number (حولها إلى فهرس يبدأ من 0)
    // 4. اطبع إجمالي المهام ومعلومات المهمة المعروضة
    // 5. قم بالمرور عبر القائمة النهائية واطبع كل مهمة
    
}

جميع دروس Logic & Flow