عرض جميع المهام
جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 17 من 66.
التحدي
سهلستتلقى مدخلين: الأول، قائمة مهام مفصولة بفاصلة، والثاني، رقم المهمة المراد عرضها (باستخدام فهرسة تبدأ من 1). اقرأ كلا المدخلين، وأنشئ vector من المهام، واعرض جميع المهام مع أرقامها، مع تمييز المهمة المطلوبة.
المتطلبات:
- اقرأ المدخل الأول الذي يحتوي على أوصاف المهام المفصولة بفاصلة (مثال:
Buy groceries,Call dentist,Finish homework) - قم بتقسيم السلسلة النصية بواسطة الفواصل للحصول على المهام الفردية
- أنشئ vector وأضف كل مهمة إليه
- اقرأ المدخل الثاني وحوله إلى عدد صحيح (رقم المهمة المراد تمييزها، باستخدام فهرسة تبدأ من 1)
- اطبع العدد الإجمالي للمهام بالتنسيق:
Total tasks: X - قم بالمرور عبر الـ vector واطبع كل مهمة مع رقمها (بدءاً من 1)
- بالنسبة لرقم المهمة المطلوبة، اطبعها بالتنسيق:
[X] [task description] (selected) - بالنسبة لجميع المهام الأخرى، اطبعها بالتنسيق:
[X] [task description]
المدخلات:
- السطر الأول: أوصاف المهام مفصولة بفاصلة (مثال:
Buy groceries,Call dentist,Finish homework) - السطر الثاني: عدد صحيح يمثل رقم المهمة المراد تمييزها (فهرسة تبدأ من 1)
المخرجات:
- السطر الأول:
Total tasks: Xحيث X هو العدد الإجمالي للمهام - الأسطر التالية: كل مهمة مع رقمها بالتنسيق
[X] [task description] - المهمة المحددة يجب أن يضاف إليها
(selected)
جرّب بنفسك
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// قراءة المهام المفصولة بفواصل
let tasks_input = lines.next().unwrap().unwrap();
// قراءة رقم المهمة المراد تمييزها
let task_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// TODO: اكتب الكود الخاص بك أدناه
// تقسيم tasks_input بواسطة الفواصل وإنشاء متجه (vector)
// طباعة العدد الإجمالي للمهام
// التكرار عبر المهام وطباعة كل واحدة مع رقمها
// تمييز المهمة المحددة بإضافة " (selected)"
}جميع دروس Logic & Flow
1تدفق التحكم المتقدم
تعبير 'match'مطابقة قيم متعددةمطابقة النطاقاتتعبير 'if let'الحلقات التكرارية كتعبيراتمراجعة - محلل أوامر بسيط4تجميع البيانات باستخدام Structs
ما هو الـ Struct؟نظرة عامة على الـ Structsالوصول إلى حقول الـ Structالـ Structs القابلة للتعديلالـ Structs كمعاملات للدوالالـ Tuple Structsمراجعة - إنشاء Book Struct7معالجة الأخطاء باستخدام 'Result'
ما هو 'Result'؟استخدام 'match' مع 'Result'is_ok() و is_err()اختصارات: unwrap و expectعامل علامة الاستفهام '?'تحويل السلاسل النصية إلى أرقامملخص - دالة القسمة الآمنة10الـ Closures والدوال المجهولة
ما هو الـ Closure؟تعريف Closure بسيطالـ Closures مع المعاملاتالتقاط البيئة المحيطةملخص - Closure الجامع البسيط2مقدمة في الـ Vectors
ما هو الـ Vector؟إنشاء Vectorإضافة عناصر باستخدام pushالوصول إلى عناصر الـ Vectorالتكرار عبر الـ Vectorالتكرار القابل للتعديل (Mutable Iteration)إزالة العناصرمراجعة - متتبع نقاط بسيط5أزواج (المفتاح والقيمة) مع Hash Maps
ما هو Hash Map؟إنشاء Hash Mapإدراج أزواج (المفتاح والقيمة)الوصول إلى القيمالتكرار عبر Hash Mapتحديث قيمةإزالة زوجملخص - عداد الكلمات6التعامل مع غياب القيم باستخدام 'Option'
ما هو الـ 'Option'؟استخدام 'match' مع 'Option''is_some()' و 'is_none()'فك تغليف الـ 'Option'الدالة 'expect'توفير قيمة افتراضية: 'unwrap_or'مراجعة - البحث عن عنصر9شرائح الـ String والمزيد
String مقابل &strإنشاء شرائح الـ Stringالشرائح كمعاملات للدوالشرائح أخرىمراجعة - إيجاد الكلمة الأولى