CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm katmanları birleştirerek çalışan bir uygulama yazarsın.

Birleştirme: tam program

Son derste tüm parçaları birleştiriyoruz: Task sınıfı, printItem şablonu, std::vector ve dosya I/O. Program görevleri oluşturur, birini tamamlar, dosyaya kaydeder, geri yükler ve tamamlananları sayar.

Bu, orta seviye finali: OOP + şablon + STL + dosya I/O tek programda. Akış: üç görev oluştur, tasks[0].done = true ile ilkini tamamla, std::ofstream ile dosyaya kaydet, std::ifstream ile geri oku ve if (done) ile tamamlananları say. Her parça önceki derslerde öğrenildi; şimdi hepsini bir araya getiriyoruz.

Tamamlanan görevleri sayma

Dosyadan geri yüklerken if (done) ile yalnızca tamamlanan görevleri sayarsın. Bu, kaydet-yükle-say deseninin son adımıdır.

Örnek: while (in >> title >> done) { if (done) count++; }. Burada her okunan görevin done bayrağı kontrol edilir; true ise sayacı artırır. Önce kaydederken tasks[0].done = true yaptığımız için, dosyada ilk görev 1 olarak yazılır. Geri okurken done 1 (yani true) olarak okunur ve sayılır. Sonuç 1 olur.

Uygulama Tam programı yaz

Başlangıç kodundaki Task sınıfı ve printItem şablonunun ardına main içinde: bir std::vector<Task> oluştur, üç görev ekle (Ödev, Spor, Kitap). tasks[0].done = true; ile ilkini tamamla. std::ofstream ile tasks.txt'ye kaydet. std::ifstream ile geri oku ve if (done) ile tamamlananları say, std::cout ile yazdır.

Başlangıç kodu

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

class Task {
public:
    std::string title;
    bool done;
    Task(std::string t) : title(t), done(false) {}
};

template <typename T>
void printItem(const T& item) {
    std::cout << item;
}

int main() {
    // Üç görev ekle, birini tamamla, kaydet, geri oku ve tamamlananları say
    return 0;
}

Örnek çözüm

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

class Task {
public:
    std::string title;
    bool done;
    Task(std::string t) : title(t), done(false) {}
};

template <typename T>
void printItem(const T& item) {
    std::cout << item;
}

int main() {
    std::vector<Task> tasks;
    tasks.push_back(Task("Ödev"));
    tasks.push_back(Task("Spor"));
    tasks.push_back(Task("Kitap"));
    tasks[0].done = true;
    std::ofstream out("tasks.txt");
    for (const auto& t : tasks) {
        out << t.title << " " << t.done << "\n";
    }
    out.close();
    std::ifstream in("tasks.txt");
    std::string title;
    bool done;
    int c = 0;
    while (in >> title >> done) {
        if (done) c++;
    }
    std::cout << c;
    return 0;
}

Beklenen çıktı

1

Soru ve cevaplar

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

1 Parçayı teknolojiye eşle

Kavram Anlamı
class Task OOP
template <typename T> Şablon
std::vector STL
std::ofstream Dosya I/O

2 Bu proje hangi dört konuyu birleştirir?

main.cpp
class Task {};
template <typename T>
std::vector<Task>;
std::ofstream;
  • HTML, CSS, JS, SQL
  • Sadece OOP
  • OOP, şablon, STL, dosya I/O Doğru cevap
  • Sadece dosya I/O

Açıklama: Proje OOP, şablon, STL ve dosya I/O'yu birleştirir.

3 Tamamlananı say

Soru
while (in >> title >> done) { if (____) count++; }
Cevap
while (in >> title >> done) { if (done) count++; }

Açıklama: if (done) ile tamamlanan görevleri sayarsın.

Orta seviye bölümündeki tüm dersler