Menu
Coddy logo textTech

Daire Uygulaması

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

challenge icon

Görev

Kolay

Circle'ı uygulayarak Shape Drawer projesini geliştirmeye devam edelim: temel Shape yapısını içeren ve kendi çizim ve alan mantığını sağlayan somut bir şekil.

Önceki dersteki temeli kullanarak projenizi şu dosyalarla genişleteceksiniz:

  • shape.h: Önceki dersteki temel Shape arayüzünüzü, DrawFunc ve AreaFunc işaretçi türleriyle birlikte koruyun.
  • circle.h: Circle yapınızı burada tanımlayın. Bir daire, Shape'i ilk üye olarak içerir (yukarı dönüşüm için ilk üye kuralını etkinleştirir) ve radius türünde bir double alanı ekler. Bir yarıçap alan ve değer olarak bir create_circle döndüren Circle kurucu işlevini bildirin.
  • circle.c: Daireye özgü davranışı burada uygulayın:
    • draw_circle: Drawing Circle with radius: X.XX yazdırır (yarıçap 2 ondalık basamakla gösterilir)
    • area_circle: π × yarıçap² değerini döndürür (π için 3.14159 kullanın)
    • create_circle: Bir Circle başlatır, içindeki Shape'in işlev işaretçilerini draw_circle ve area_circle'ı gösterecek şekilde bağlar, yarıçapı ayarlar ve daireyi döndürür
  • main.c: Her şeyi bir araya getirin. Girdi olarak bir yarıçap değeri okuyun, kurucunuzu kullanarak bir daire oluşturun, ardından içindeki draw'in işlev işaretçileri üzerinden hem area hem de Shape işlevlerini çağırın. Alanı 2 ondalık basamakla yazdırın.

Programınız bir girdi alacaktır: yarıçap değeri (kayan noktalı sayı olarak).

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

Drawing Circle with radius: 5.00
Area: 78.54

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

Drawing Circle with radius: 3.50
Area: 38.48

Temel fikir, Circle'ın ilk üyesi olarak bir Shape içermesidir; böylece işlev işaretçilerine circle.base.draw ve circle.base.area (veya içindeki üyeye verdiğiniz ad) üzerinden erişebilirsiniz. Bu işlevleri çağırırken Shape üyesine bir işaretçi geçirin. Tüm başlık dosyalarında include guard kullanmayı unutmayın.

Kendin dene

#include <stdio.h>
#include "shape.h"
#include "circle.h"

int main() {
    double radius;
    scanf("%lf", &radius);
    
    // TODO: create_circle kullanarak bir Circle oluştur
    
    // TODO: Gömülü Shape'in fonksiyon işaretçisi üzerinden draw'ı çağır
    
    // TODO: Gömülü Shape'in fonksiyon işaretçisi üzerinden area'yı çağır
    // ve 2 ondalık basamakla yazdır: "Area: %.2f\n"
    
    return 0;
}

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

Kendi başına pratik yap: Online C derleyicisi