Özet: Typedef ve Enum Pratiği
Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 60 / 63.
Görev
Kolayenum ve typedef yapılarını birleştirerek basit bir geometrik şekil hesaplayıcısı oluşturan bir C programı yaz. Programın şunları yapmalıdır:
- Aşağıdaki sabitleri tam olarak bu sırayla içeren,
enumadlı birShapeTypetanımla:CIRCLERECTANGLETRIANGLE
typedefiçinShapeadlı bir tür takma adı oluşturmak üzereenum ShapeTypekullan- Şunları yapan
calculateAreaadlı bir fonksiyon yaz:Shapeadlı birshapeparametresi alırfloatvedimension1adlı ikidimension2parametresi alır- Hesaplanan alanı temsil eden bir
floatdöndürür - Şekil türüne göre alanı hesaplamak için bir
switchdeyimi kullanır:CIRCLEiçin: alan = 3.14159 * dimension1 * dimension1 (dimension1 yarıçaptır)RECTANGLEiçin: alan = dimension1 * dimension2 (uzunluk × genişlik)TRIANGLEiçin: alan = 0.5 * dimension1 * dimension2 (0.5 × taban × yükseklik)
- Şunları yapan
printShapeInfoadlı bir fonksiyon yaz:Shapeadlı birshapeparametresi alır- Hiçbir şey döndürmez (void)
- Şekil bilgilerini yazdırmak için bir
switchdeyimi kullanır:CIRCLEiçin:Shape: CircleyazdırırRECTANGLEiçin:Shape: RectangleyazdırırTRIANGLEiçin:Shape: Triangleyazdırır
- main fonksiyonunda:
ShapeadlıselectedShapetüründe bir değişken tanımlafloatvedim1adlı ikidim2değişkeni tanımla- Girdiden üç değer oku: şekil seçimini temsil eden bir tamsayı (0, 1 veya 2) ve boyutlar için iki float değeri
- Girdiye göre ilgili enum değerini
selectedShapedeğişkenine ata - Boyut değerlerini
dim1vedim2değişkenlerine ata printShapeInfofonksiyonunuselectedShapeile çağır- Boyutları tam olarak şu biçimde yazdır:
Dimensions: [dim1] [dim2] calculateAreafonksiyonunu çağırarak alanı hesapla- Hesaplanan alanı tam olarak 2 ondalık basamakla şu biçimde yazdır:
Area: [area] - Hesaplanan alana göre şekil kategorisini belirle ve yazdır:
- Alan 10.0'dan küçükse:
Category: Smallyazdır - Alan 10.0 ile 50.0 arasındaysa (sınırlar dahil):
Category: Mediumyazdır - Alan 50.0'dan büyükse:
Category: Largeyazdır
- Alan 10.0'dan küçükse:
Bu görev, enum ve typedef yapılarının birlikte kullanılmasının güçlü birleşimini gösterir. typedef, tekrar tekrar Shape yazmak yerine temiz ve okunabilir bir tür adı olan enum ShapeType oluşturur. enum sabitleri, her durumun neyi temsil ettiğini açıkça göstererek switch deyimlerinin kendi kendini belgelemesini sağlar. Her iki kavramı tanımlamayı, bunları fonksiyon parametrelerinde kullanmayı ve enum değerlerine bağlı mantık uygulamayı deneyimleyeceksin.
Kendin dene
#include <stdio.h>
// YAPILACAK: ShapeType enum yapısını ve typedef'i burada tanımlayın
// YAPILACAK: calculateArea fonksiyonunu burada uygulayın
// YAPILACAK: printShapeInfo fonksiyonunu burada uygulayın
int main() {
// Girdiyi oku
int shapeChoice;
float dim1, dim2;
scanf("%d", &shapeChoice);
scanf("%f", &dim1);
scanf("%f", &dim2);
// YAPILACAK: Kodunuzu aşağıya yazın
// selectedShape değişkenini bildirin ve shapeChoice'a göre atama yapın
// printShapeInfo fonksiyonunu çağırın
// Boyutları yazdırın
// Alanı hesaplayın ve yazdırın
// Kategoriyi belirleyin ve yazdırın
return 0;
}Mantık & Akış bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma7Yapılar (structs)
Struct Nedir?Struct TanımlamaStruct Değişkenleri OluşturmaStruct Üyelerine ErişmeStruct BaşlatmaÖzet: Öğrenci Verisi Struct'ı10Enum'lar ve Typedef
İsimlendirilmiş Sabitler için enumEnum Tanımlama ve KullanmaSwitch İfadelerinde Enum KullanımıTür Takma Adları için typedef KullanımıStruct'lar ile typedef KullanımıÖzet: Typedef ve Enum Pratiği2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String FonksiyonlarıKendi başına pratik yap: Online C derleyicisi