Menu
Coddy logo textTech

Özet: Greeter

Coddy'nin C Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 43 / 61.

challenge icon

Görev

Kolay

Fonksiyon göstericileri (function pointers) aracılığıyla polimorfizmi gösteren bir Greeter sistemi kuralım — aynı yapı (struct) türü, hangi selamlama fonksiyonunun bağlandığına bağlı olarak farklı çıktılar üretecek.

Kodunuzu üç dosya halinde düzenleyeceksiniz:

  • greeter.h: Selamlayıcı arayüzünüzü burada tanımlayın. Bir const char* (selamlanacak isim) alan ve hiçbir şey döndürmeyen GreetFunc adında bir fonksiyon göstericisi türü oluşturun. Ardından, bir language (bir const char*) ve GreetFunc türünde bir greet fonksiyon göstericisi içeren bir Greeter yapısı (struct) tanımlayın.
  • greeter.c: Farklı dilleri temsil eden selamlama fonksiyonlarını uygulayın:
    • greet_englishHello, name! yazdırır
    • greet_spanishHola, name! yazdırır
  • main.c: Her şeyi burada birleştirin. Biri İngilizce diğeri İspanyolca için olmak üzere, her biri ilgili selamlama fonksiyonuna bağlanmış iki Greeter örneği oluşturun. Girdi olarak bir isim okuyun, ardından polimorfik davranışı göstermek için her iki selamlayıcıda greet fonksiyonunu çağırın.

Programınız tek bir girdi alacaktır: selamlanacak bir name.

Dili English olarak ayarlanmış bir İngilizce selamlayıcı ve dili Spanish olarak ayarlanmış bir İspanyolca selamlayıcı oluşturun. Her selamlayıcı için, dilini ve ardından bir iki nokta üst üste ve boşluk yazdırın, ardından girdi ismiyle greet fonksiyonunu çağırın.

Girdi Maria olduğunda örnek çıktı:

English: Hello, Maria!
Spanish: Hola, Maria!

Girdi Carlos olduğunda örnek çıktı:

English: Hello, Carlos!
Spanish: Hola, Carlos!

Her iki selamlayıcı da aynı Greeter türündedir, ancak her birinin greet üyesine farklı bir fonksiyon atandığı için farklı selamlamalar üretirler. Başlık dosyanızda "include guards" kullanmayı unutmayın.

Kendin dene

#include <stdio.h>
#include <string.h>
#include "greeter.h"

int main() {
    // İsim girişini oku
    char name[100];
    scanf("%s", name);
    
    // TODO: İngilizce bir greeter oluşturun
    // - language değerini "English" olarak ayarlayın
    // - greet değerini greet_english fonksiyonuna ayarlayın
    
    
    // TODO: İspanyolca bir greeter oluşturun
    // - language değerini "Spanish" olarak ayarlayın
    // - greet değerini greet_spanish fonksiyonuna ayarlayın
    
    
    // TODO: Her bir greeter için:
    // 1. Dili ve ardından ": " yazdırın
    // 2. name ile greet fonksiyonunu çağırın
    
    
    return 0;
}

Object Oriented Programming bölümündeki tüm dersler