Quiz oynatma
- C++ kursu
- Orta seviye
- Ders 44/116
- 6 dk
run metoduyla soruları sırayla sormayı öğrenirsin.
Quiz oynatma
Şimdi Quiz sınıfına run() metodu ekleyeceğiz. Bu metod soruların metinlerini ekrana yazdırır. Döngüyle her soruyu gezeriz.
Örnek: void run() { for (const auto& q : questions) { std::cout << "Soru: " << q.text << std::endl; } }. Burada for (const auto& q : questions) aralık tabanlı döngüdür (range-based for); her Question öğesini q olarak gezer. main içinde quiz.run(); çağrısı soruları yazdırır. Önceki derslerin çıktısının altına soru metinleri eklenir.
Aralık tabanlı döngü
Aralık tabanlı döngü (range-based for), bir container'ın tüm öğelerini tek tek gezer. const auto& her öğeye referansla erişir; kopya yapmaz.
questions vector'ünde her Question'ın text ve answer alanları vardır. q.text ile soru metnine erişiriz. Bu derste yalnız metni yazdırırız; sonraki derste cevap kontrolü ve skor ekleyeceğiz. Çıktı her ders büyümeye devam eder.
Uygulama Quiz'e run metodunu ekle
Önceki dersin Quiz sınıfını al. public: altına void run() metodu ekle; gövdesi for (const auto& q : questions) { std::cout << "Soru: " << q.text << std::endl; }. main içinde "soru eklendi" satırının sonuna << std::endl ekle ve quiz.run(); çağır.
Başlangıç kodu
#include <iostream>
#include <string>
#include <vector>
struct Question {
std::string text;
std::string answer;
};
class Quiz {
public:
std::vector<Question> questions;
void addQuestion(std::string text, std::string answer) {
questions.push_back({text, answer});
}
};
int main() {
Quiz quiz;
quiz.addQuestion("Başkent?", "Ankara");
quiz.addQuestion("En büyük gezegen?", "Jüpiter");
std::cout << "Quiz hazır" << std::endl;
std::cout << quiz.questions.size() << " soru eklendi";
// run metodunu ekle ve çağır
return 0;
}Örnek çözüm
#include <iostream>
#include <string>
#include <vector>
struct Question {
std::string text;
std::string answer;
};
class Quiz {
public:
std::vector<Question> questions;
void addQuestion(std::string text, std::string answer) {
questions.push_back({text, answer});
}
void run() {
for (const auto& q : questions) {
std::cout << "Soru: " << q.text << std::endl;
}
}
};
int main() {
Quiz quiz;
quiz.addQuestion("Başkent?", "Ankara");
quiz.addQuestion("En büyük gezegen?", "Jüpiter");
std::cout << "Quiz hazır" << std::endl;
std::cout << quiz.questions.size() << " soru eklendi" << std::endl;
quiz.run();
return 0;
}Beklenen çıktı
Quiz hazır 2 soru eklendi Soru: Başkent? Soru: En büyük gezegen?
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bileşeni rolüne eşle
| Kavram | Anlamı |
|---|---|
for (const auto& |
Aralık döngüsü |
q.text |
Soru metni |
quiz.run() |
Oynatma çağrısı |
std::endl |
Satır atla |
2 Aralık döngüsünü tamamla
for (const auto& ____ : questions) { }
for (const auto& q : questions) { }
Açıklama: q, her Question öğesini temsil eder.
3 for (const auto& q : questions) ne yapar?
for (const auto& q : questions) { }- Sadece ilk soruyu gezer
- Her soruyu tek tek gezer Doğru cevap
- Vector'ü temizler
- Soruları sıralar
Açıklama: Aralık tabanlı döngü her öğeyi tek tek gezer.