Final Kodu
Coddy'nin Rust Journey'sinin Logic & Flow bölümünün bir parçası — ders 19 / 66.
Görev
KolayTam bir yapılacaklar listesi iş akışını temsil eden dört girdi alacaksınız: birincisi, virgülle ayrılmış başlangıç görevleri listesi; ikincisi, eklenecek yeni bir görev; üçüncüsü, görüntülenecek bir görev numarası (1 tabanlı indeksleme); ve dördüncüsü, silinecek bir görev numarası (1 tabanlı indeksleme). Tüm bu işlemleri işleyen ve son durumu görüntüleyen eksiksiz bir yapılacaklar listesi yöneticisi oluşturun.
Gereksinimler:
- Virgülle ayrılmış görev açıklamalarını içeren ilk girdiyi okuyun (örneğin,
Buy groceries,Call dentist,Finish homework) - Dizeyi virgüllere göre ayırın ve bu başlangıç görevleriyle değiştirilebilir bir vektör (mutable vector) oluşturun
- İkinci girdiyi okuyun ve
.push()kullanarak bu yeni görevi vektöre ekleyin - Üçüncü girdiyi okuyun, bunu bir tam sayıya dönüştürün (görüntülenecek 1 tabanlı görev numarası)
- Dördüncü girdiyi okuyun, bunu bir tam sayıya dönüştürün (silinecek 1 tabanlı görev numarası)
- 1 tabanlı indeksi 0 tabanlıya dönüştürerek ve
.remove()kullanarak belirtilen görevi silin Total tasks: Xyazdırın, burada X son görev sayısıdırViewing task: Yyazdırın, burada Y görüntülenmesi istenen görev numarasıdır- Son görev listesi üzerinde döngü kurun ve her görevi numarasıyla (1 tabanlı) birlikte yazdırın
- Görüntüleme numarasıyla eşleşen görev için (silme düzeltmelerinden sonra) şunu yazdırın:
[X] [task description] (selected) - Diğer tüm görevler için şunu yazdırın:
[X] [task description]
Girdi:
- Birinci satır: Virgülle ayrılmış görev açıklamaları (örneğin,
Buy groceries,Call dentist,Finish homework) - İkinci satır: Eklenecek yeni bir görev (örneğin,
Study for exam) - Üçüncü satır: Görüntülenecek görev numarasını temsil eden bir tam sayı (1 tabanlı indeksleme)
- Dördüncü satır: Silinecek görev numarasını temsil eden bir tam sayı (1 tabanlı indeksleme)
Çıktı:
- Birinci satır:
Total tasks: Xburada X son görev sayısıdır - İkinci satır:
Viewing task: Yburada Y istenen görüntüleme numarasıdır - Sonraki satırlar:
[X] [task description]formatında her bir görev ve numarası - Seçilen görevin (görüntüleme numarasıyla eşleşen) sonuna
(selected)eklenmelidir
Kendin dene
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Başlangıçtaki virgülle ayrılmış görevleri oku
let initial_tasks = lines.next().unwrap().unwrap();
// Eklenecek yeni görevi oku
let new_task = lines.next().unwrap().unwrap();
// Görüntülenecek görev numarasını oku (1 tabanlı)
let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// Silinecek görev numarasını oku (1 tabanlı)
let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// TODO: Kodunuzu aşağıya yazın
// 1. initial_tasks değişkenini virgüllere göre ayırın ve değiştirilebilir bir vektör oluşturun
// 2. new_task değişkenini vektöre ekleyin
// 3. remove_number konumundaki görevi silin (0 tabanlı dizine dönüştürün)
// 4. Toplam görev sayısını ve görüntülenen görev bilgisini yazdırın
// 5. Nihai liste üzerinde döngü kurun ve her bir görevi yazdırın
}Logic & Flow bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
'match' İfadesiBirden Çok Değeri EşleştirmeAralıkları Eşleştirme'if let' İfadesiİfade Olarak DöngülerÖzet - Basit Komut Ayrıştırıcı4Struct'lar ile Verileri Gruplama
Struct Nedir?Struct'lara Genel BakışStruct Alanlarına ErişmeMutable Struct'larFonksiyon Parametresi Olarak Struct'larTuple Struct'larÖzet - Bir Kitap Struct'ı Oluşturun7'Result' ile Hata Yönetimi
'Result' Nedir?'Result' ile 'match' Kullanımıis_ok() ve is_err()Kısayollar: unwrap ve expectSoru İşareti Operatörü '?'String'leri Sayılara DönüştürmeÖzet - Güvenli Bölme Fonksiyonu10Closures ve Anonim Fonksiyonlar
Closure Nedir?Basit Bir Closure TanımlamaParametreli Closure'larOrtamı YakalamakÖzet - Basit Toplayıcı Closure2Vektörlere Giriş
Vektör Nedir?Vektör Oluşturmapush ile Eleman EklemeVektör Elemanlarına ErişmeVektör Üzerinde YinelemeDeğiştirilebilir YinelemeEleman KaldırmaÖzet - Temel Skor Takipçisi5Hash Map'ler ile Anahtar-Değer Çiftleri
Hash Map Nedir?Bir Hash Map OluşturmaAnahtar-Değer Çiftleri EklemeDeğerlere ErişmeBir Hash Map Üzerinde GezinmeBir Değeri GüncellemeBir Çifti KaldırmaÖzet - Kelime Sayacı11Son Meydan Okumalar
Özet - Benzersiz ÖğelerÖzet - Kullanıcı Profili DoğrulayıcıÖzet - Not Özetleyici3Komut Satırı Yapılacaklar Listesi
Proje KurulumuGörev EklemeTüm Görevleri GörüntülemeGörev SilmeFinal Kodu6'Option' ile Yokluğu Yönetme
'Option' Nedir?'Option' ile 'match' Kullanımıis_some() ve is_none()Bir 'Option' Değerini Açmak (Unwrapping)expect MetoduVarsayılan Değer Sağlama: unwrap_orÖzet - Bir Eleman Bulma9String Dilimleri ve Daha Fazlası
String ve &strString Dilimleri OluşturmaFonksiyon Parametresi Olarak DilimlerDiğer DilimlerÖzet - İlk Kelimeyi Bulma