Menghapus Tugas
Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 21 dari 56.
Tantangan
MudahKembangkan task list tool dengan menerapkan fitur penghapusan untuk menghapus tugas tertentu dari daftar. Ini melanjutkan pelajaran sebelumnya dengan menambahkan kemampuan untuk menghapus tugas berdasarkan nomor posisinya.
Input berikut akan diberikan:
- Bilangan bulat
nyang menunjukkan jumlah tugas yang akan ditambahkan pada awalnya - Lalu
nstring yang berisi deskripsi tugas - Bilangan bulat
taskNumberyang menunjukkan nomor tugas yang akan dihapus (indeks dimulai dari 1)
Programmu harus:
- Memulai dengan pengaturan yang sama seperti pada pelajaran sebelumnya (
std::vector<std::string>kosong bernamatasksdan pesan sambutan) - Membaca jumlah tugas dengan
cin >> n, lalu memanggilcin.ignore()untuk membuang karakter baris baru yang tersisa sebelum membaca string tugas dengangetline() - Menambahkan setiap deskripsi tugas ke vector menggunakan
push_back() - Membaca nomor tugas yang akan dihapus
- Memastikan nomor tugas berada dalam rentang yang valid (1 hingga ukuran vector)
- Jika nomor tugas tidak valid, mencetak pesan error
- Jika nomor tugas valid, menggunakan method
.erase()untuk menghapus tugas pada posisi yang ditentukan - Mencetak pesan konfirmasi yang menunjukkan tugas mana yang dihapus
- Menampilkan tugas yang tersisa dalam format daftar bernomor
- Menampilkan jumlah total tugas yang telah diperbarui
Penting: mencampur cin dan getline():
Saat kamu membaca bilangan bulat dengan cin >> n, karakter baris baru ('\n') akan tertinggal di buffer input. Jika kamu lalu memanggil getline(), fungsi itu akan langsung membaca karakter baris baru yang tersisa tersebut sebagai string kosong, bukan input sebenarnya. Untuk mengatasinya, panggil cin.ignore() tepat setelah cin >> n untuk membuang karakter baris baru yang tersisa:
cin >> n;
cin.ignore(); // discard the leftover newline
for (int i = 0; i < n; i++) {
string task;
getline(cin, task); // now reads correctly
tasks.push_back(task);
}Gunakan format output persis seperti berikut:
Untuk nomor tugas yang tidak valid:
Welcome to Task List Tool!
Menu Options:
1. Add Task
2. View Tasks
3. Quit
Task list system initialized and ready!
Error: Invalid task number. Please enter a number between 1 and [total tasks].Untuk penghapusan tugas yang valid:
Welcome to Task List Tool!
Menu Options:
1. Add Task
2. View Tasks
3. Quit
Task list system initialized and ready!
Task "[removed task description]" removed successfully!
Remaining Tasks:
1. [first remaining task]
2. [second remaining task]
...
Total tasks: [updated number of tasks]Ingat, .erase() memerlukan iterator, jadi gunakan tasks.erase(tasks.begin() + index), dengan index sebagai posisi berbasis 0 (taskNumber - 1). Validasi input dengan memeriksa apakah taskNumber lebih besar dari 0 dan kurang dari atau sama dengan tasks.size(). Jika daftar menjadi kosong setelah penghapusan, cetak "No tasks remaining." sebagai pengganti daftar tugas yang tersisa.
Coba sendiri
#include <iostream>
#include <vector>
#include <string>
int main() {
std::vector<std::string> tasks;
std::cout << "Welcome to Task List Tool!" << std::endl;
std::cout << std::endl;
std::cout << "Menu Options:" << std::endl;
std::cout << "1. Add Task" << std::endl;
std::cout << "2. View Tasks" << std::endl;
std::cout << "3. Quit" << std::endl;
std::cout << std::endl;
std::cout << "Task list system initialized and ready!" << std::endl;
int n;
std::cin >> n;
for (int i = 0; i < n; i++) {
std::string task;
std::cin >> task;
tasks.push_back(task);
}
if (tasks.empty()) {
std::cout << "No tasks available." << std::endl;
} else {
std::cout << "Your Tasks:" << std::endl;
for (int i = 0; i < tasks.size(); i++) {
std::cout << (i + 1) << ". " << tasks[i] << std::endl;
}
std::cout << "Total tasks: " << tasks.size() << std::endl;
}
return 0;
}Semua pelajaran di Logika dan Alur
1Pointer dan Memori
Apa Itu Pointer?Operator Address-OfOperator DereferencePointer NullPointer dan ArrayMemori Dinamis dengan 'new'Membebaskan Memori dengan 'delete'Rangkuman: Latihan Pointer2Vektor (array Dinamis)
Memperkenalkan std::vectorMembuat VektorMenambahkan ElemenMengakses ElemenUkuran VektorIterasi dengan for loopFor loop Berbasis RentangMenghapus ElemenRangkuman: Operasi Vektor3Proyek: Alat Daftar Tugas
Ikhtisar ProyekMenambahkan TugasLatihan sendiri: Compiler C++ online