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şlevselliği birbirine bağlayan ana program döngüsünü uygulayarak görev listesi aracınızı tamamlayın. Bu son ders, menüyü tekrar tekrar görüntüleyen ve kullanıcı çıkmayı seçene kadar kullanıcı komutlarını işleyen tam işlevsel bir görev yönetimi uygulaması oluşturur.
Aşağıdaki girdiler sağlanacaktır:
- Bir dizi menü seçeneği (tam sayılar: Görev Ekleme için 1, Görevleri Görüntüleme için 2, Görev Silme için 3, Çıkış için 4)
- Görev Ekleme (seçenek 1) için: görev açıklamasını temsil eden bir dize
- Görev Silme (seçenek 3) için: silinecek görev numarasını temsil eden bir tam sayı (1 tabanlı indeksleme)
Programınız şunları yapmalıdır:
- Önceki derslerdeki aynı kurulumla başlayın (
tasksadında boş birstd::vector<std::string>ve karşılama mesajı) - Kullanıcı çıkmayı seçene kadar devam eden bir ana döngü oluşturun
- Her yineleme için menüyü görüntüleyin ve kullanıcının seçimini okuyun
- Her menü seçeneğini işleyin:
- Seçenek 1: Bir görev açıklaması okuyun ve
push_back()kullanarak ekleyin - Seçenek 2: Tüm görevleri numaralandırılmış formatta görüntüleyin veya boşsa "No tasks available." mesajını gösterin
- Seçenek 3: Bir görev numarası okuyun, doğrulayın ve
.erase()kullanarak görevi silin - Seçenek 4: Program döngüsünden çıkın
- Seçenek 1: Bir görev açıklaması okuyun ve
- Geçersiz menü seçimleri 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ı formatını kullanın:
İlk kurulum ve menü ekranı:
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 şunu görüntüleyin:
Choose an option: Görev Ekleme (seçenek 1) için:
Task "[task description]" added successfully!
Total tasks: [number of tasks]Görevleri Görüntüleme (seçenek 2) için (görevler varken):
Your Tasks:
1. [first task]
2. [second task]
...
Total tasks: [number of tasks]Görevleri Görüntüleme (seçenek 2) için (boşken):
No tasks available.Görev Silme (seçenek 3) için (geçerli görev numarasıyla):
Task "[removed task description]" removed successfully!
Remaining Tasks:
1. [first remaining task]
...
Total tasks: [updated number of tasks]Görev Silme (seçenek 3) için (geçersiz görev numarasıyla):
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çenek 4):
Thank you for using Task List Tool!Kullanıcı 4 girene kadar devam eden bir while döngüsü kullanın. Görev Silme işlevselliği için, tasks.erase(tasks.begin() + index) kullanmadan önce görev numarasının 1 ile tasks.size() arasında olduğunu doğrulamayı unutmayın. Silme 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;
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 Ekleme