Menghapus Tugas
Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 18 dari 66.
Tantangan
MudahKamu akan menerima tiga input: pertama, daftar tugas yang sudah ada dan dipisahkan dengan koma; kedua, nomor tugas yang akan dihapus (indeks berbasis 1); dan ketiga, tugas baru yang akan ditambahkan setelah penghapusan. Baca semua input, buat vector dari tugas-tugas tersebut, hapus tugas yang ditentukan, tambahkan tugas baru, lalu tampilkan daftar tugas yang sudah diperbarui.
Persyaratan:
- Baca input pertama yang berisi deskripsi tugas yang dipisahkan dengan koma (misalnya,
Buy groceries,Call dentist,Finish homework) - Pisahkan string dengan koma untuk mendapatkan setiap tugas
- Buat vector yang mutable dan tambahkan setiap tugas ke dalamnya
- Baca input kedua dan ubah menjadi bilangan bulat (nomor tugas yang akan dihapus, menggunakan indeks berbasis 1)
- Ubah indeks berbasis 1 menjadi indeks berbasis 0, lalu gunakan
.remove()untuk menghapus tugas pada indeks tersebut - Baca input ketiga yang berisi tugas baru untuk ditambahkan
- Gunakan
.push()untuk menambahkan tugas baru ke vector - Cetak jumlah total tugas dengan format:
Total tasks: X - Cetak setiap tugas pada baris terpisah dengan format:
Task: [task description]
Input:
- Baris pertama: Deskripsi tugas yang dipisahkan dengan koma (misalnya,
Buy groceries,Call dentist,Finish homework) - Baris kedua: Bilangan bulat yang menunjukkan nomor tugas yang akan dihapus (indeks berbasis 1)
- Baris ketiga: Tugas baru yang akan ditambahkan (misalnya,
Study for exam)
Output:
- Baris pertama:
Total tasks: Xdengan X sebagai jumlah total tugas setelah penghapusan dan penambahan - Baris berikutnya: Setiap tugas dicetak dengan format
Task: [task description]
Coba sendiri
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Baca tugas-tugas yang dipisahkan koma
let tasks_input = lines.next().unwrap().unwrap();
// Baca nomor tugas yang akan dihapus (indeks dimulai dari 1)
let task_to_remove = lines.next().unwrap().unwrap();
let task_number: usize = task_to_remove.trim().parse().unwrap();
// Baca tugas baru yang akan ditambahkan
let new_task = lines.next().unwrap().unwrap();
// TODO: Tulis kodemu di bawah ini
// Pisahkan tasks_input berdasarkan koma dan buat vektor yang dapat diubah
// Hapus tugas pada indeks yang ditentukan (ubah indeks yang dimulai dari 1 menjadi dimulai dari 0)
// Tambahkan tugas baru ke vektor
// Tampilkan hasilnya
// Cetak jumlah tugas dengan format: Total tasks: X
// Cetak setiap tugas dengan format: Task: [deskripsi 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