Aracı Tamamlama
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 22 / 56.
Görev
KolayTüm işlevleri bir araya getiren ana program döngüsünü uygulayarak görev listesi aracınızı tamamlayın. Bu son derste, menüyü tekrar tekrar görüntüleyen ve kullanıcı çıkmayı seçene kadar kullanıcı komutlarını işleyen, tamamen işlevsel bir görev yönetimi uygulaması oluşturulur.
Aşağıdaki girdiler sağlanacaktır:
- Bir dizi menü seçeneği (tamsayılar: 1 Görev Ekle, 2 Görevleri Görüntüle, 3 Görevi Kaldır, 4 Çıkış)
- Görev Ekle (seçim 1) için: görev açıklamasını temsil eden bir dize
- Görevi Kaldır (seçim 3) için: kaldırılacak görev numarasını temsil eden bir tamsayı (1 tabanlı indeksleme)
Programınız şunları yapmalıdır:
- Önceki derslerdekiyle aynı kurulumla başlayın (boş
std::vector<std::string>türünde, adıtasksolan vektör ve karşılama mesajı) - Kullanıcı çıkmayı seçene kadar devam eden bir ana döngü oluşturun
- Her yinelemede menüyü görüntüleyin ve kullanıcının seçimini okuyun
- Her menü seçeneğini işleyin:
- Seçim 1: Bir görev açıklaması okuyun ve
push_back()kullanarak ekleyin - Seçim 2: Tüm görevleri numaralandırılmış biçimde görüntüleyin veya liste boşsa "No tasks available." mesajını gösterin
- Seçim 3: Bir görev numarası okuyun, geçerliliğini doğrulayın ve
.erase()kullanarak görevi kaldırın - Seçim 4: Program döngüsünden çıkın
- Seçim 1: Bir görev açıklaması okuyun ve
- Geçersiz menü seçenekleri için bir hata mesajı görüntüleyin ve döngüye devam edin
- Kullanıcı çıktığında bir veda mesajı yazdırın
Aşağıdaki tam çıktı biçimini kullanın:
İlk kurulum ve menü görüntüleme:
Welcome to Task List Tool!
Menu Options:
1. Add Task
2. View Tasks
3. Remove Task
4. Quit
Task list system initialized and ready!Her menü yinelemesi için görüntülenecek:
Choose an option: Görev Ekle (seçim 1) için:
Task "[task description]" added successfully!
Total tasks: [number of tasks]Görevleri Görüntüle (seçim 2) için, görevler varsa:
Your Tasks:
1. [first task]
2. [second task]
...
Total tasks: [number of tasks]Görevleri Görüntüle (seçim 2) için, liste boşsa:
No tasks available.Görevi Kaldır (seçim 3) için, görev numarası geçerliyse:
Task "[removed task description]" removed successfully!
Remaining Tasks:
1. [first remaining task]
...
Total tasks: [updated number of tasks]Görevi Kaldır (seçim 3) için, görev numarası geçersizse:
Error: Invalid task number. Please enter a number between 1 and [total tasks].Geçersiz menü seçimi için:
Invalid choice. Please try again.Kullanıcı çıktığında (seçim 4):
Thank you for using Task List Tool!Kullanıcı 4 girene kadar devam eden bir while döngüsü kullanın. Görevi Kaldır işlevi için, tasks.size() kullanmadan önce görev numarasının 1 ile tasks.erase(tasks.begin() + index) arasında olduğunu doğrulamayı unutmayın. Kaldırma işleminden sonra liste boşalırsa, kalan görevler listesini yazdırmak yerine "No tasks remaining." mesajını 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;
std::cin.ignore();
for (int i = 0; i < n; i++) {
std::string task;
std::getline(std::cin, task);
tasks.push_back(task);
}
int taskNumber;
std::cin >> taskNumber;
if (taskNumber < 1 || taskNumber > tasks.size()) {
std::cout << "Error: Invalid task number. Please enter a number between 1 and " << tasks.size() << "." << std::endl;
} else {
std::string removedTask = tasks[taskNumber - 1];
tasks.erase(tasks.begin() + (taskNumber - 1));
std::cout << "Task \"" << removedTask << "\" removed successfully!" << std::endl;
if (tasks.empty()) {
std::cout << "No tasks remaining." << std::endl;
} else {
std::cout << "Remaining 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