Görev Silme
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 21 / 56.
Görev
KolayGörev listesi aracınızı, listeden belirli görevleri silmek için kaldırma işlevini uygulayarak genişletin. Bu, görevleri konum numaralarına göre kaldırma yeteneği ekleyerek önceki dersin üzerine inşa edilir.
Aşağıdaki girdiler sağlanacaktır:
- Başlangıçta eklenecek görev sayısını temsil eden bir tam sayı
n - Ardından görev açıklamalarını temsil eden
nadet dize - Kaldırılacak görev numarasını temsil eden bir tam sayı
taskNumber(1 tabanlı indeksleme)
Programınız şunları yapmalıdır:
- Önceki dersteki aynı kurulumla başlayın (
tasksadında boş birstd::vector<std::string>ve karşılama mesajı) - Görev sayısını
cin >> nile okuyun, ardındangetline()ile görev dizelerini okumadan önce kalan yeni satır karakterini atmak içincin.ignore()işlevini çağırın push_back()kullanarak her bir görev açıklamasını vektöre ekleyin- Kaldırılacak görev numarasını okuyun
- Görev numarasının geçerli aralıkta (1 ile vektörün boyutu arasında) olduğunu doğrulayın
- Görev numarası geçersizse, bir hata mesajı yazdırın
- Görev numarası geçerliyse, belirtilen konumdaki görevi kaldırmak için
.erase()yöntemini kullanın - Hangi görevin kaldırıldığını gösteren bir onay mesajı yazdırın
- Kalan görevleri numaralandırılmış bir liste formatında görüntüleyin
- Güncellenmiş toplam görev sayısını gösterin
Önemli — cin ve getline() kullanımını karıştırmak:
cin >> n ile bir tam sayı okuduğunuzda, giriş tamponunda bir yeni satır karakteri ('\n') bırakır. Daha sonra getline() işlevini çağırırsanız, gerçek girişiniz yerine o kalan yeni satırı hemen boş bir dize olarak okuyacaktır. Bunu düzeltmek için, kalan yeni satırı atmak üzere cin >> n işleminden hemen sonra cin.ignore() işlevini çağırın:
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);
}Aşağıdaki tam çıktı formatını kullanın:
Geçersiz görev numarası için:
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].Geçerli görev kaldırma için:
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].erase() yönteminin bir yineleyici (iterator) gerektirdiğini unutmayın, bu nedenle index değerinin 0 tabanlı konum (taskNumber - 1) olduğu tasks.erase(tasks.begin() + index) ifadesini kullanın. taskNumber değerinin 0'dan büyük ve tasks.size() değerine eşit veya ondan küçük olup olmadığını kontrol ederek girişi doğrulayın. Kaldırma işleminden sonra liste boşalırsa, kalan görevler listesi yerine "No tasks remaining." yazdırın.
Kendin dene
#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;
}Mantık & Akış bölümündeki tüm dersler
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev Ekleme