CodeBlanks Logo Icon CodeBlanks

Görev tamamlama

completeTask ile görev durumunu güncellemeyi öğrenirsin.

Görev tamamlama

Şimdi completeTask fonksiyonunu yazacağız. Bu fonksiyon, verilen indeksdeki görevi tamamlandı olarak işaretler. İmza: void completeTask(std::vector<Task>& tasks, size_t index).

Gövdede önce if (index < tasks.size()) ile sınır denetimi yapılır; geçersiz indekste işlem yapılmaz. Sonra tasks[index].done = true ile görev tamamlanır. Ayrıca listTasks'i güncelleyip done durumunu göstermek, uygulamanın daha kullanışlı olmasını sağlar.

Liste güncelleme

listTasks fonksiyonunu güncelleyip done durumunu gösterelim. Her görevin önüne, tamamlandıysa [x], olmadıysa [ ] yazdırırız. Bu, kullanıcının görev durumunu kolayca görmesini sağlar.

Yeni gövde: if (tasks[i].done) { std::cout << "[x] " << tasks[i].title; } else { std::cout << "[ ] " << tasks[i].title; }. Böylece liste hem numarasız hem de durumlu olur. Bu ders, listTask'i güncellemeni ve completeTask'ı eklemeni ister.

Uygulama completeTask ve liste güncelleme

void completeTask(std::vector<Task>& tasks, size_t index) fonksiyonunu tanımla; gövdede if (index < tasks.size()) ile sınır denetimi yap, tasks[index].done = true; yaz. listTasks'i güncelle: if (tasks[i].done) ile "[x] ", değilse "[ ] " yazdır, sonra tasks[i].title. main içinde iki görev ekle, completeTask(tasks, 0) ve listTasks(tasks) çağır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <string>
#include <vector>

struct Task {
    std::string title;
    bool done;
};

void addTask(std::vector<Task>& tasks, const std::string& title) {
    Task t;
    t.title = title;
    t.done = false;
    tasks.push_back(t);
}

void listTasks(const std::vector<Task>& tasks) {
    for (size_t i = 0; i < tasks.size(); ++i) {
        std::cout << i + 1 << ". " << tasks[i].title << "\n";
    }
}

// completeTask fonksiyonunu tanımla

int main() {
    std::vector<Task> tasks;
    addTask(tasks, "Ekmek al");
    addTask(tasks, "Süt al");
    // completeTask ve listTasks çağrıları ekle
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <string>
#include <vector>

struct Task {
    std::string title;
    bool done;
};

void addTask(std::vector<Task>& tasks, const std::string& title) {
    Task t;
    t.title = title;
    t.done = false;
    tasks.push_back(t);
}

void listTasks(const std::vector<Task>& tasks) {
    for (size_t i = 0; i < tasks.size(); ++i) {
        if (tasks[i].done) {
            std::cout << "[x] " << tasks[i].title << "\n";
        } else {
            std::cout << "[ ] " << tasks[i].title << "\n";
        }
    }
}

void completeTask(std::vector<Task>& tasks, size_t index) {
    if (index < tasks.size()) {
        tasks[index].done = true;
    }
}

int main() {
    std::vector<Task> tasks;
    addTask(tasks, "Ekmek al");
    addTask(tasks, "Süt al");
    completeTask(tasks, 0);
    listTasks(tasks);
    return 0;
}

Beklenen çıktı

[x] Ekmek al
[ ] Süt al

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 completeTask gövdesi

Soru
if (index < tasks.size()) {
    tasks[index].____ = true;
}
Cevap
if (index < tasks.size()) {
    tasks[index].done = true;
}

Açıklama: tasks[index].done = true; görevi tamamlar.

2 completeTask(tasks, 0) sonrası tasks[0].done nedir?

main.cpp
std::vector<Task> tasks;
addTask(tasks, "Ekmek al");
completeTask(tasks, 0);
std::cout << (tasks[0].done ? "true" : "false");
  • false
  • 0
  • true Doğru cevap
  • Hata

Açıklama: completeTask tasks[0].done = true yapar.

3 İfadeyi anlamına eşle

Kavram Anlamı
void completeTask Fonksiyon imzası
if (index < tasks.size()) Sınır denetimi
tasks[index].done = true Tamamlama
[x] Tamamlandı işareti

Başlangıç bölümündeki tüm dersler