Menu
Coddy logo textTech

Aracı Tamamlama

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 22 / 56.

challenge icon

Görev

Kolay

Tü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:

  1. Önceki derslerdekiyle aynı kurulumla başlayın (boş std::vector<std::string> türünde, adı tasks olan vektör ve karşılama mesajı)
  2. Kullanıcı çıkmayı seçene kadar devam eden bir ana döngü oluşturun
  3. Her yinelemede menüyü görüntüleyin ve kullanıcının seçimini okuyun
  4. 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
  5. Geçersiz menü seçenekleri için bir hata mesajı görüntüleyin ve döngüye devam edin
  6. 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

Kendi başına pratik yap: Online C++ derleyicisi