Görev Silme
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 21 / 56.
Görev
KolayListenizdeki belirli görevleri silmek için kaldırma işlevini uygulayarak görev listesi aracınızı genişletin. Bu, görevleri konum numaralarına göre kaldırma özelliği ekleyerek önceki dersin üzerine inşa edilir.
Aşağıdaki girdiler sağlanacaktır:
- Başlangıçta eklenecek görevlerin sayısını belirten bir tamsayı
n - Ardından görev açıklamalarını temsil eden
ndize - Kaldırılacak görev numarasını belirten bir tamsayı
taskNumber(1 tabanlı indeksleme)
Programınız şunları yapmalıdır:
- Önceki dersteki kurulumla başlayın (adı
std::vector<std::string>olan boş birtasksve karşılama mesajı) - Görevlerin sayısını
cin >> nile okuyun, ardından görev dizelerinicin.ignore()ile okumadan önce kalan satır sonunu atmak içingetline()çağrısını yapın - Her görev açıklamasını
push_back()kullanarak vektöre ekleyin - Kaldırılacak görev numarasını okuyun
- Görev numarasının geçerli aralıkta olduğunu doğrulayın (1 ile vektörün boyutu arasında)
- 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 numaralı liste biçiminde görüntüleyin
- Güncellenmiş toplam görev sayısını gösterin
Önemli: cin ve getline() karıştırılırken:
Bir tamsayıyı cin >> n ile okuduğunuzda, giriş arabelleğinde bir satır sonu karakteri ('\n') bırakır. Ardından getline() çağırırsanız, gerçek girdiniz yerine kalan satır sonunu boş bir dize olarak hemen okur. Bunu düzeltmek için kalan satır sonunu atmak üzere cin.ignore() işleminden hemen sonra cin >> n çağrısını yapı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ı biçimini 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şlemi 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 gerektirdiğini unutmayın; bu nedenle tasks.erase(tasks.begin() + index), 0 tabanlı konum (taskNumber - 1) olacak şekilde index kullanın. taskNumber değerinin 0'dan büyük ve tasks.size() değerinden küçük ya da ona eşit olup olmadığını kontrol ederek girdiyi doğrulayın. Kaldırma işleminden sonra liste boşalırsa kalan görevler listesinin 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 EklemeKendi başına pratik yap: Online C++ derleyicisi