Menu
Coddy logo textTech

Dikdörtgen Uygulaması

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

challenge icon

Görev

Kolay

Circle ile yaptığımız gibi, temel Rectangle struct'ını içeren başka bir somut şekil olan Shape'ı uygulayarak Shape Drawer projesini geliştirmeye devam edelim.

Mevcut projenizi temel alarak şu dosyalara dikdörtgen işlevselliği ekleyeceksiniz:

  • shape.h: Önceki derslerdeki Shape ve DrawFunc işaretçi türlerini içeren temel AreaFunc arayüzünüzü koruyun.
  • circle.h ve circle.c: Önceki dersteki Circle uygulamanızı koruyun.
  • rectangle.h: Rectangle struct'ını burada tanımlayın. Bir dikdörtgen, Shape'i ilk üye olarak içerir ve width ile height alanlarını (her ikisi de double) ekler. Genişlik ve yükseklik parametrelerini alan ve değer olarak bir create_rectangle döndüren Rectangle kurucu işlevini bildirin.
  • rectangle.c: Dikdörtgene özgü davranışı uygulayın:
    • draw_rectangle: Drawing Rectangle with width: X.XX and height: X.XX yazdırır (her iki değer de 2 ondalık basamakla gösterilir)
    • area_rectangle: genişlik × yükseklik değerini döndürür
    • create_rectangle: Bir Rectangle başlatır, içindeki Shape'in işlev işaretçilerini dikdörtgen işlevlerine bağlar, boyutları ayarlar ve dikdörtgeni döndürür
  • main.c: Her iki şeklin de aynı arayüz üzerinden çalıştığını gösterin. İki girdi okuyun: bir dikdörtgen için genişlik ve yükseklik. Kurucunuzu kullanarak bir dikdörtgen 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 iki girdi alacaktır: width ve height değerleri (kayan noktalı sayılar olarak).

Girdiler 4.0 ve 3.0 olduğunda örnek çıktı:

Drawing Rectangle with width: 4.00 and height: 3.00
Area: 12.00

Girdiler 7.5 ve 2.5 olduğunda örnek çıktı:

Drawing Rectangle with width: 7.50 and height: 2.50
Area: 18.75

Circle'da olduğu gibi, Rectangle da Shape'i ilk üye olarak içerir; bu sayede işlev işaretçilerine içindeki üye üzerinden erişebilirsiniz. Bu tutarlı desen polimorfizmi mümkün kılar: her iki şekil de Shape arayüzleri üzerinden aynı şekilde ele alınabilir. Tüm başlık dosyalarında include guard'ları kullanmayı unutmayın.

Kendin dene

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

int main() {
    double width, height;
    scanf("%lf", &width);
    scanf("%lf", &height);
    
    // TODO: create_rectangle(width, height) kullanarak bir dikdörtgen oluştur
    
    // TODO: Gömülü Shape'in fonksiyon işaretçisi aracılığıyla draw'ı çağır
    
    // TODO: Gömülü Shape'in fonksiyon işaretçisi aracılığıyla area'yı çağır
    // TODO: Alanı 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