Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة: تمارين على Typedef و Enum

جزء من قسم Logic & Flow في رحلة C على Coddy. الدرس 60 من 63.

challenge icon

التحدي

سهل

قم بإنشاء برنامج بلغة C يجمع بين enum و typedef لبناء آلة حاسبة بسيطة للأشكال الهندسية. يجب أن يقوم برنامجك بما يلي:

  1. تعريف enum باسم ShapeType مع الثوابت التالية بهذا الترتيب تماماً:
    • CIRCLE
    • RECTANGLE
    • TRIANGLE
  2. استخدام typedef لإنشاء اسم مستعار للنوع (type alias) باسم Shape لـ enum ShapeType
  3. كتابة دالة باسم calculateArea تقوم بما يلي:
    • تأخذ بارامتر من نوع Shape باسم shape
    • تأخذ بارامترين من نوع float باسم dimension1 و dimension2
    • تعيد قيمة من نوع float تمثل المساحة المحسوبة
    • تستخدم جملة switch لحساب المساحة بناءً على نوع الشكل:
      • لـ CIRCLE: المساحة = 3.14159 * dimension1 * dimension1 (حيث dimension1 هو نصف القطر)
      • لـ RECTANGLE: المساحة = dimension1 * dimension2 (الطول × العرض)
      • لـ TRIANGLE: المساحة = 0.5 * dimension1 * dimension2 (0.5 × القاعدة × الارتفاع)
  4. كتابة دالة باسم printShapeInfo تقوم بما يلي:
    • تأخذ بارامتر من نوع Shape باسم shape
    • لا تعيد أي قيمة (void)
    • تستخدم جملة switch لطباعة معلومات الشكل:
      • لـ CIRCLE: اطبع Shape: Circle
      • لـ RECTANGLE: اطبع Shape: Rectangle
      • لـ TRIANGLE: اطبع Shape: Triangle
  5. في الدالة الرئيسية (main function):
    • التصريح عن متغير من نوع Shape باسم selectedShape
    • التصريح عن متغيرين من نوع float باسم dim1 و dim2
    • قراءة ثلاث قيم من المدخلات: عدد صحيح يمثل اختيار الشكل (0، 1، أو 2)، وقيمتان من نوع float للأبعاد
    • تعيين قيمة enum المقابلة لـ selectedShape بناءً على المدخلات
    • تعيين قيم الأبعاد لـ dim1 و dim2
    • استدعاء الدالة printShapeInfo مع selectedShape
    • طباعة الأبعاد بهذا التنسيق تماماً: Dimensions: [dim1] [dim2]
    • حساب المساحة عن طريق استدعاء الدالة calculateArea
    • طباعة المساحة المحسوبة بمنزلتين عشريتين بالضبط بهذا التنسيق تماماً: Area: [area]
    • تحديد وطباعة فئة الشكل بناءً على المساحة المحسوبة:
      • إذا كانت المساحة أقل من 10.0: اطبع Category: Small
      • إذا كانت المساحة بين 10.0 و 50.0 (شاملة): اطبع Category: Medium
      • إذا كانت المساحة أكبر من 50.0: اطبع Category: Large

يوضح هذا التحدي المزيج القوي بين enum و typedef اللذين يعملان معاً. ينشئ typedef اسم نوع نظيفاً وقابلاً للقراءة Shape بدلاً من كتابة enum ShapeType بشكل متكرر. تجعل ثوابت enum جمل switch توثق نفسها بنفسها، مما يوضح بوضوح ما يمثله كل حالة. ستتدرب على تعريف كلا المفهومين، واستخدامهما في بارامترات الدوال، وتنفيذ المنطق الذي يعتمد على قيم enum.

جرّب بنفسك

#include <stdio.h>

// TODO: قم بتعريف enum ShapeType و typedef هنا

// TODO: قم بتنفيذ دالة calculateArea هنا

// TODO: قم بتنفيذ دالة printShapeInfo هنا

int main() {
    // قراءة المدخلات
    int shapeChoice;
    float dim1, dim2;
    scanf("%d", &shapeChoice);
    scanf("%f", &dim1);
    scanf("%f", &dim2);
    
    // TODO: اكتب الكود الخاص بك أدناه
    // قم بتعريف متغير selectedShape وتعيينه بناءً على shapeChoice
    // استدعاء دالة printShapeInfo
    // طباعة الأبعاد
    // حساب وطباعة المساحة
    // تحديد وطباعة الفئة
    
    return 0;
}

جميع دروس Logic & Flow

تدرّب بنفسك: مترجم C عبر الإنترنت