CodeBlanks Logo Icon CodeBlanks

Birleştirme

  • C kursu
  • Orta seviye
  • Ders 46/116
  • 6 dk

Quiz fonksiyonlarını konsol menüsüyle birleştirirsin.

Birleştirme

Son ders run_quiz_app fonksiyonunu tanımlar. Bu fonksiyon, tüm quiz akışını tek bir yerde toplar: karşılama, soru ekleme, oynatma, yüzde hesaplama ve veda mesajı.

İmza: void run_quiz_app(void). Gövde: printf("Quiz hazır\n"); ile başlar; struct Question questions[10]; int count = 0; tanımlar; add_question ile 2 soru ekler; printf("%d soru eklendi\n", count); yazar; run_quiz ve print_percentage çağırır; son olarak printf("Tamamlandı\n"); yazar. main gövdesi run_quiz_app(); return 0; olur. Önceki dersin çözümü başlangıç koduna dahildir.

Uygulama run_quiz_app fonksiyonunu yaz

void run_quiz_app(void) yaz. Gövdede sırayla: printf("Quiz hazır\n");, struct Question questions[10]; int count = 0;, iki add_question çağrısı ("Başkent?", 0 ve "2+2?", 1), printf("%d soru eklendi\n", count);, int score = run_quiz(questions, count);, printf("Skor: %d\n", score);, print_percentage(score, count);, printf("Tamamlandı\n");. main gövdesini run_quiz_app(); return 0; yap.

Başlangıç kodu

main.c
#include <stdio.h>
#include <string.h>

struct Question {
    char text[64];
    int correct;
};

void add_question(struct Question *q, int *count, const char *text, int correct) {
    strcpy(q[*count].text, text);
    q[*count].correct = correct;
    (*count)++;
}

int run_quiz(struct Question *q, int count) {
    int answers[3] = {0, 1, 2};
    int score = 0;
    for (int i = 0; i < count; i++) {
        printf("Soru %d: %s\n", i + 1, q[i].text);
        if (answers[i] == q[i].correct) {
            score++;
        }
    }
    return score;
}

void print_percentage(int score, int count) {
    int pct = score * 100 / count;
    printf("Yüzde: %d%%\n", pct);
}

// run_quiz_app fonksiyonunu yaz: tüm akışı içine taşı
// sonuna "Tamamlandı" yazdır
// main gövdesini run_quiz_app çağrısıyla değiştir

int main(void) {
    struct Question questions[10];
    int count = 0;
    add_question(questions, &count, "Başkent?", 0);
    add_question(questions, &count, "2+2?", 1);
    printf("%d soru eklendi\n", count);
    int score = run_quiz(questions, count);
    printf("Skor: %d\n", score);
    print_percentage(score, count);
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <string.h>

struct Question {
    char text[64];
    int correct;
};

void add_question(struct Question *q, int *count, const char *text, int correct) {
    strcpy(q[*count].text, text);
    q[*count].correct = correct;
    (*count)++;
}

int run_quiz(struct Question *q, int count) {
    int answers[3] = {0, 1, 2};
    int score = 0;
    for (int i = 0; i < count; i++) {
        printf("Soru %d: %s\n", i + 1, q[i].text);
        if (answers[i] == q[i].correct) {
            score++;
        }
    }
    return score;
}

void print_percentage(int score, int count) {
    int pct = score * 100 / count;
    printf("Yüzde: %d%%\n", pct);
}

void run_quiz_app(void) {
    printf("Quiz hazır\n");
    struct Question questions[10];
    int count = 0;
    add_question(questions, &count, "Başkent?", 0);
    add_question(questions, &count, "2+2?", 1);
    printf("%d soru eklendi\n", count);
    int score = run_quiz(questions, count);
    printf("Skor: %d\n", score);
    print_percentage(score, count);
    printf("Tamamlandı\n");
}

int main(void) {
    run_quiz_app();
    return 0;
}

Beklenen çıktı

Quiz hazır
2 soru eklendi
Soru 1: Başkent?
Soru 2: 2+2?
Skor: 2
Yüzde: 100%
Tamamlandı

Proje tamamlandı

Beş derslik quiz uygulaması projesini tamamladın. İlk dersin iskeletinden başladın; add_question, run_quiz ve print_percentage fonksiyonlarını ekledin; sonunda run_quiz_app ile hepsini birleştirdin.

Bu yapı, gerçek C projelerinin temelidir: veri modeli (struct Question), katmanlı fonksiyonlar ve entegrasyon noktası. Bir sonraki grupta dosya I/O ile veriyi diske yazıp okuyacak; böylece quiz sorularını kalıcı hale getirebileceksin. Proje boyunca biriktirdiğin kod, ilerideki projeler için iskelet olarak hizmet verecek.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 run_quiz_app fonksiyonunun görevi nedir?

  • Soru eklemek
  • Skor hesaplamak
  • Dosya açmak
  • Tüm akışı birleştirmek Doğru cevap

Açıklama: run_quiz_app tüm quiz akışını tek fonksiyonda birleştirir.

2 Fonksiyonları görevine eşle

Kavram Anlamı
add_question Soru ekleme
run_quiz Quiz oynatma
print_percentage Yüzde yazdırma
run_quiz_app Tüm akış

3 run_quiz_app çağrısını tamamla

Soru
int main(void) {
    ____();
    return 0;
}
Cevap
int main(void) {
    run_quiz_app();
    return 0;
}

Açıklama: main, run_quiz_app fonksiyonunu çağırır.

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