Kode Akhir
Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 19 dari 66.
Tantangan
MudahKamu akan menerima empat input yang mewakili alur kerja daftar tugas lengkap: pertama, daftar tugas awal yang dipisahkan dengan koma; kedua, tugas baru yang akan ditambahkan; ketiga, nomor tugas yang akan dilihat (indeks berbasis 1); dan keempat, nomor tugas yang akan dihapus (indeks berbasis 1). Buat pengelola daftar tugas lengkap yang memproses semua operasi ini dan menampilkan keadaan akhirnya.
Persyaratan:
- Baca input pertama yang berisi deskripsi tugas yang dipisahkan dengan koma (misalnya,
Buy groceries,Call dentist,Finish homework) - Pisahkan string berdasarkan koma dan buat vector yang bisa diubah dari tugas-tugas awal ini
- Baca input kedua dan tambahkan tugas baru ini ke vector menggunakan
.push() - Baca input ketiga, lalu ubah menjadi bilangan bulat (nomor tugas berbasis 1 yang akan dilihat)
- Baca input keempat, lalu ubah menjadi bilangan bulat (nomor tugas berbasis 1 yang akan dihapus)
- Hapus tugas yang ditentukan dengan mengubah indeks berbasis 1 menjadi indeks berbasis 0 dan menggunakan
.remove() - Cetak
Total tasks: Xdengan X sebagai jumlah akhir tugas - Cetak
Viewing task: Ydengan Y sebagai nomor tugas yang diminta untuk dilihat - Telusuri daftar tugas akhir dan cetak setiap tugas beserta nomornya (berbasis 1)
- Untuk tugas yang cocok dengan nomor yang akan dilihat (setelah penyesuaian akibat penghapusan), cetak:
[X] [task description] (selected) - Untuk semua tugas lainnya, cetak:
[X] [task description]
Input:
- Baris pertama: Deskripsi tugas yang dipisahkan dengan koma (misalnya,
Buy groceries,Call dentist,Finish homework) - Baris kedua: Tugas baru yang akan ditambahkan (misalnya,
Study for exam) - Baris ketiga: Bilangan bulat yang mewakili nomor tugas yang akan dilihat (indeks berbasis 1)
- Baris keempat: Bilangan bulat yang mewakili nomor tugas yang akan dihapus (indeks berbasis 1)
Output:
- Baris pertama:
Total tasks: Xdengan X sebagai jumlah akhir tugas - Baris kedua:
Viewing task: Ydengan Y sebagai nomor yang diminta untuk dilihat - Baris berikutnya: Setiap tugas beserta nomornya dalam format
[X] [task description] - Tugas yang dipilih (yang cocok dengan nomor yang akan dilihat) harus diikuti
(selected)
Coba sendiri
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Baca tugas awal yang dipisahkan koma
let initial_tasks = lines.next().unwrap().unwrap();
// Baca tugas baru yang akan ditambahkan
let new_task = lines.next().unwrap().unwrap();
// Baca nomor tugas yang akan dilihat (berbasis 1)
let view_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// Baca nomor tugas yang akan dihapus (berbasis 1)
let remove_number: usize = lines.next().unwrap().unwrap().trim().parse().unwrap();
// TODO: Tulis kodemu di bawah ini
// 1. Pisahkan initial_tasks berdasarkan koma dan buat vektor yang dapat diubah
// 2. Tambahkan new_task ke vektor
// 3. Hapus tugas pada remove_number (ubah menjadi indeks berbasis 0)
// 4. Cetak jumlah tugas dan informasi tugas yang dilihat
// 5. Telusuri list akhir dan cetak setiap tugas
}Semua pelajaran di Logika dan Alur
1Alur Kontrol Lanjutan
Ekspresi 'match'Mencocokkan Beberapa NilaiMencocokkan RentangEkspresi 'if let'Perulangan sebagai EkspresiRangkuman, Parser Perintah Sederhana4Mengelompokkan Data dengan Struct
Apa Itu Struct?Ringkasan StructMengakses Field StructStruct yang Dapat DiubahStruct sebagai Parameter FungsiStruct TupleRangkuman: Buat Struct Buku2Pengantar Vektor
Apa Itu Vektor?Membuat VektorMenambahkan Elemen dengan pushMengakses Elemen VektorMelakukan Iterasi pada VektorIterasi MutableMenghapus ElemenRangkuman: Pelacak Skor Dasar5Pasangan Kunci-Nilai dengan Hash Map
Apa Itu Hash Map?Membuat Hash MapMenyisipkan Pasangan Kunci-NilaiMengakses NilaiMenelusuri Hash MapMemperbarui NilaiMenghapus PasanganRangkuman: Penghitung Kata8Proyek: Inventaris Barang Sederhana
Menyiapkan ProyekMenambahkan BarangMemeriksa StokMenjual BarangMenyatukan Semuanya3Daftar Tugas Baris Perintah
Penyiapan ProyekMenambahkan TugasMelihat Semua TugasMenghapus TugasKode AkhirLatihan sendiri: Compiler Rust online