CodeBlanks Logo Icon CodeBlanks

Görev listeleme

listTasks ile görevleri formatlı yazdırmayı öğrenirsin.

Görev listeleme

Şimdi listTasks fonksiyonunu yazacağız. Bu fonksiyon, listeyi okunaklı biçimde ekrana yazdırır. const std::vector<Task>& parametresi alır; const çünkü liste yalnızca okunur, değiştirilmez.

Gövdede bir for döngüsüyle her görevi indeksle gezer, i + 1 ile numaralandırıp tasks[i].title ile başlığı yazdırırsın. Bu, öğrenciye 'kaçıncı görev' bilgisini verir ve listeyi okunaklı yapar.

Döngüyle gezme

Bir vektörü indeksle gezmek için klasik for döngüsü kullanılır: for (size_t i = 0; i < tasks.size(); ++i). size_t, size()'ın dönüş türüyle uyuşan işaretsiz bir tamsayı türüdür.

Döngü içinde tasks[i] ile i'inci elemana erişilir; tasks[i].title ile de başlığı alınır. i + 1 yazarak kullanıcıya 1'den başlayan numara gösterirsin; çünkü insanlar 0'dan değil 1'den sayar. Bu, liste çıktısını okunaklı yapar.

Uygulama listTasks fonksiyonu

void listTasks(const std::vector<Task>& tasks) fonksiyonunu tanımla. Gövdede for (size_t i = 0; i < tasks.size(); ++i) ile her görevi gez; her satırda i + 1, ". " ve tasks[i].title yazdır. main içinde addTask ile "Ekmek al" ve "Süt al" ekle, 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);
}

// listTasks fonksiyonunu tanımla

int main() {
    std::vector<Task> tasks;
    addTask(tasks, "Ekmek al");
    addTask(tasks, "Süt al");
    // listTasks çağrısı 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) {
        std::cout << i + 1 << ". " << tasks[i].title << "\n";
    }
}

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

Beklenen çıktı

1. Ekmek al
2. Süt al

Soru ve cevaplar

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

1 listTasks çıktısının ilk satırı nedir?

main.cpp
std::vector<Task> tasks;
addTask(tasks, "Ekmek al");
addTask(tasks, "Süt al");
listTasks(tasks);
  • 2. Süt al
  • 1. Ekmek al Doğru cevap
  • Ekmek al
  • 1

Açıklama: İlk görevin numarası 1, başlığı 'Ekmek al'; ilk satır '1. Ekmek al' olur.

2 İfadeyi anlamına eşle

Kavram Anlamı
void listTasks Fonksiyon imzası
for (size_t i... Döngü
tasks[i].title Eleman erişimi
listTasks(tasks) Çağrı

3 listTasks gövdesi

Soru
for (size_t i = 0; i < ____.size(); ++i) { std::cout << i + 1; }
Cevap
for (size_t i = 0; i < tasks.size(); ++i) { std::cout << i + 1; }

Açıklama: for (size_t i = 0; i < tasks.size(); ++i) ile görevler gezilir.

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