Menu
Coddy logo textTech

Özet: Greeter

Coddy'nin C Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 43 / 61.

challenge icon

Görev

Kolay

Fonksiyon işaretçileri aracılığıyla polimorfizmi gösteren bir Greeter sistemi oluşturalım: hangi selamlama fonksiyonunun bağlandığına bağlı olarak farklı çıktılar üreten aynı struct türü.

Kodunuzu üç dosyaya ayıracaksınız:

  • greeter.h: Greeter arayüzünüzü burada tanımlayın. Bir GreetFunc (selamlanacak ad) alan ve hiçbir şey döndürmeyen const char* adlı bir fonksiyon işaretçisi türü oluşturun. Ardından bir Greeter (language) ve const char* türünde bir greet fonksiyon işaretçisi içeren bir GreetFunc struct'ı tanımlayın.
  • greeter.c: Farklı dilleri temsil eden selamlama fonksiyonlarını uygulayın:
    • greet_english: Hello, name! yazdırır
    • greet_spanish: Hola, name! yazdırır
  • main.c: Her şeyi burada bir araya getirin. Biri İngilizce, diğeri İspanyolca için olmak üzere iki Greeter örneği oluşturun ve her birini ilgili selamlama fonksiyonuna bağlayın. Bir adı girdi olarak okuyun, ardından polimorfik davranışı göstermek için her iki greeter üzerinde greet fonksiyonunu çağırın.

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

English olarak ayarlanmış bir language değerine sahip bir İngilizce greeter ve Spanish olarak ayarlanmış bir language değerine sahip bir İspanyolca greeter oluşturun. Her greeter için, language değerini, ardından iki nokta üst üste ve bir boşluk yazdırın; sonra girdi adını kullanarak greet fonksiyonunu çağırın.

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

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

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

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

Her iki greeter da aynı Greeter türündedir, ancak her birinin greet üyesine farklı bir fonksiyon atandığı için farklı selamlamalar üretirler. Header dosyanızda include guard kullanmayı unutmayın.

Kendin dene

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

int main() {
    // İsim girdisini oku
    char name[100];
    scanf("%s", name);
    
    // TODO: Bir İngilizce selamlayıcı oluştur
    // - language'i "English" olarak ayarla
    // - greet'i greet_english fonksiyonuna ayarla
    
    
    // TODO: Bir İspanyolca selamlayıcı oluştur
    // - language'i "Spanish" olarak ayarla
    // - greet'i greet_spanish fonksiyonuna ayarla
    
    
    // TODO: Her selamlayıcı için:
    // 1. Dili yazdır, ardından ": "
    // 2. greet fonksiyonunu isimle çağır
    
    
    return 0;
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online C derleyicisi