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ş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:

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