C++
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.
Örnek çözümü göster
#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;
}
Kendini test et
-
Parçayı teknolojiye eşle
- class Task
- OOP
- template <typename T>
- Şablon
- std::vector
- STL
- std::ofstream
- Dosya I/O
-
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
- Sadece dosya I/O
Cevabı göster
OOP, şablon, STL, dosya I/O — Proje OOP, şablon, STL ve dosya I/O'yu birleştirir.
-
Tamamlananı say
while (in >> title >> done) { if (____) count++; }
Cevabı göster
while (in >> title >> done) { if (done) count++; }
Sıradaki ders: Orta seviye bölüm sınavı