Birleştirme
- C++ kursu
- Orta seviye
- Ders 69/116
- 6 dk
Kütüphane sınıfını konsol menüsüyle birleştirirsin.
Konsol menüsü
Son ders tüm parçaları birleştirir. main içinde bir döngü kitapları listeler, kullanıcı bir kitap seçer ve checkout ile ödünç verilir. Döngü, lib.count() ve lib.getBook(i) ile koleksiyonu dolaşır.
Önceki derslerin Book ve Library sınıflarını alıp main'i yeniden yazacağız. Menü kitapları 0: Tutunamayanlar biçiminde listeler, sonra 0. kitabı ödünç verir. Bu, projenin tüm parçalarını tek bir çalışan uygulamada birleştirir. Artık kütüphane uygulaması hazır.
Listeleme döngüsü
Menü döngüsü for (size_t i = 0; i < lib.count(); ++i) ile her kitabı dolaşır. lib.getBook(i).getTitle() ile başlığı okur ve std::cout << i << ": " << başlık ile yazdırır. Her satır bir kitabı gösterir.
Listelemeden sonra lib.checkout(0) ile 0. kitabı ödünç veririz. Başarılıysa "ödünç verildi" yazdırırız. Bu basit menü, projenin tüm metotlarını çağırır: addBook ile ekleme, count ve getBook ile listeleme, checkout ile ödünç verme. Gerçek bir uygulamada std::cin ile kullanıcı girişi alırsın.
Uygulama Menü ile listele ve ödünç ver
Önceki dersin tüm sınıflarını al. main içinde iki kitap ekle. Bir for döngüsüyle lib.count() kadar dön ve her kitabı i: başlık biçiminde yazdır. Sonra lib.checkout(0) ile 0. kitabı ödünç ver ve başarılıysa "ödünç verildi" yazdır.
Başlangıç kodu
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
class Book {
private:
std::string title;
std::string author;
public:
Book(std::string t, std::string a) : title(t), author(a) {}
std::string getTitle() const { return title; }
std::string getAuthor() const { return author; }
};
class Library {
private:
std::vector<Book> books;
std::vector<bool> borrowed;
public:
void addBook(const Book& b) { books.push_back(b); borrowed.push_back(false); }
size_t count() const { return books.size(); }
Book getBook(int idx) const { return books[idx]; }
bool checkout(int idx) {
if (idx < 0 || idx >= (int)books.size()) return false;
if (borrowed[idx]) return false;
borrowed[idx] = true;
return true;
}
bool searchByTitle(const std::string& t) const {
auto it = std::find_if(books.begin(), books.end(),
[&t](const Book& b) { return b.getTitle() == t; });
return it != books.end();
}
};
int main() {
Library lib;
lib.addBook(Book("Tutunamayanlar", "Oğuz Atay"));
lib.addBook(Book("İnce Memed", "Yaşar Kemal"));
// kitapları listele, 0. kitabı ödünç ver ve sonucu yazdır
return 0;
}Örnek çözüm
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
class Book {
private:
std::string title;
std::string author;
public:
Book(std::string t, std::string a) : title(t), author(a) {}
std::string getTitle() const { return title; }
std::string getAuthor() const { return author; }
};
class Library {
private:
std::vector<Book> books;
std::vector<bool> borrowed;
public:
void addBook(const Book& b) { books.push_back(b); borrowed.push_back(false); }
size_t count() const { return books.size(); }
Book getBook(int idx) const { return books[idx]; }
bool checkout(int idx) {
if (idx < 0 || idx >= (int)books.size()) return false;
if (borrowed[idx]) return false;
borrowed[idx] = true;
return true;
}
bool searchByTitle(const std::string& t) const {
auto it = std::find_if(books.begin(), books.end(),
[&t](const Book& b) { return b.getTitle() == t; });
return it != books.end();
}
};
int main() {
Library lib;
lib.addBook(Book("Tutunamayanlar", "Oğuz Atay"));
lib.addBook(Book("İnce Memed", "Yaşar Kemal"));
for (size_t i = 0; i < lib.count(); ++i) {
std::cout << i << ": " << lib.getBook(i).getTitle() << "\n";
}
if (lib.checkout(0)) {
std::cout << "ödünç verildi";
}
return 0;
}Beklenen çıktı
0: Tutunamayanlar 1: İnce Memed ödünç verildi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Menüde kitapları listelemek için ne kullanılır?
for (size_t i = 0; i < ???; ++i)- std::vector
- class Book
- lib.count() Doğru cevap
- std::sort
Açıklama: lib.count() kitap sayısını verir, döngü sınırı olur.
2 Metodu amacıyla eşle
| Kavram | Anlamı |
|---|---|
lib.count() |
Kitap sayısı |
lib.getBook(i) |
İ. kitap |
lib.checkout(0) |
Ödünç ver |
lib.searchByTitle(t) |
Başlıkla ara |
3 Döngü gövdesini tamamla
for (size_t i = 0; i < lib.count(); ++i) {
std::cout << i << ": " << lib.____(i).getTitle() << "\n";
}
for (size_t i = 0; i < lib.count(); ++i) {
std::cout << i << ": " << lib.getBook(i).getTitle() << "\n";
}
Açıklama: lib.getBook(i) ile i. kitaba erişirsin.