Menu
Coddy logo textTech

Görev Silme

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

challenge icon

Görev

Kolay

Listenizdeki 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 n dize
  • Kaldırılacak görev numarasını belirten bir tamsayı taskNumber (1 tabanlı indeksleme)

Programınız şunları yapmalıdır:

  1. Önceki dersteki kurulumla başlayın (adı std::vector<std::string> olan boş bir tasks ve karşılama mesajı)
  2. Görevlerin sayısını cin >> n ile okuyun, ardından görev dizelerini cin.ignore() ile okumadan önce kalan satır sonunu atmak için getline() çağrısını yapın
  3. Her görev açıklamasını push_back() kullanarak vektöre ekleyin
  4. Kaldırılacak görev numarasını okuyun
  5. Görev numarasının geçerli aralıkta olduğunu doğrulayın (1 ile vektörün boyutu arasında)
  6. Görev numarası geçersizse bir hata mesajı yazdırın
  7. Görev numarası geçerliyse belirtilen konumdaki görevi kaldırmak için .erase() yöntemini kullanın
  8. Hangi görevin kaldırıldığını gösteren bir onay mesajı yazdırın
  9. Kalan görevleri numaralı liste biçiminde görüntüleyin
  10. 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

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