CodeBlanks Logo Icon CodeBlanks

Görev ekleme

addTask fonksiyonuyla listeye görev eklemeyi öğrenirsin.

Görev ekleme

Şimdi addTask fonksiyonunu yazacağız. Bu fonksiyon yeni bir Task oluşturup başlığını ayarlar ve listeye ekler. Böylece ana program ayrı ayrı Task yazmaktan kurtulur.

Fonksiyon imzası: void addTask(std::vector<Task>& tasks, const std::string& title). Gövdede bir Task oluştur, title ve done = false ayarla, tasks.push_back ile ekle. tasks referans olarak alındığı için ekleme çağırana yansır.

vector<Task> ve referans

Görevleri saklamak için std::vector<Task> kullanılır. Bu vektör dinamik boyutludur; push_back ile eleman ekledikçe büyür. Boş liste std::vector<Task> tasks; ile tanımlanır.

addTask fonksiyonu, tasks parametresini referans olarak alır: std::vector<Task>&. Bu, fonksiyon içindeki push_back çağrısının çağıran tarafın listesini doğrudan değiştirmesi demektir. Değerle geçişde bu değişiklik yansımazdı; bu yüzden referans şarttır.

Uygulama addTask fonksiyonu

void addTask(std::vector<Task>& tasks, const std::string& title) fonksiyonunu tanımla. Gövdede bir Task oluştur, title'a parametreyi ata, done = false yap, tasks.push_back ile ekle. main içinde addTask(tasks, "Ekmek al") çağır, tasks.size()'ı std::cout ile yazdır.

Başlangıç kodu

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

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

// addTask fonksiyonunu tanımla

int main() {
    std::vector<Task> tasks;
    // addTask çağrısı ekle ve sayıyı yazdır
    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);
}

int main() {
    std::vector<Task> tasks;
    addTask(tasks, "Ekmek al");
    std::cout << tasks.size() << "\n";
    return 0;
}

Beklenen çıktı

1

Soru ve cevaplar

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

1 İki görev eklenince tasks[1].title çıktısı nedir?

main.cpp
std::vector<Task> tasks;
addTask(tasks, "Ekmek al");
addTask(tasks, "Süt al");
std::cout << tasks[1].title;
  • Süt al Doğru cevap
  • Boş
  • Ekmek al
  • 0

Açıklama: İkinci eklenen görevin indeksi 1; title "Süt al" olur.

2 addTask gövdesi

Soru
tasks.____(t);
Cevap
tasks.push_back(t);

Açıklama: tasks.push_back(t); t'yi vektöre ekler.

3 İfadeyi anlamına eşle

Kavram Anlamı
void addTask Fonksiyon imzası
std::vector<Task>& Referans parametre
tasks.push_back(t) Ekleme
addTask(tasks, ...) Çağrı

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