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
#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
#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
int main(void) {
____();
return 0;
}
int main(void) {
run_quiz_app();
return 0;
}
Açıklama: main, run_quiz_app fonksiyonunu çağırır.