Birleştirme
- C++ kursu
- Orta seviye
- Ders 116/116
- 6 dk
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
#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
#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?
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
while (in >> title >> done) { if (____) count++; }
while (in >> title >> done) { if (done) count++; }
Açıklama: if (done) ile tamamlanan görevleri sayarsın.