CodeBlanks Logo Icon CodeBlanks

Quiz oynatma

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

main.cpp
#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

main.cpp
#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

Soru
for (const auto& ____ : questions) { }
Cevap
for (const auto& q : questions) { }

Açıklama: q, her Question öğesini temsil eder.

3 for (const auto& q : questions) ne yapar?

main.cpp
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.

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