Menu
CoddyTech

عمليات المصفوفات الشائعة

جزء من قسم الأساسيات في رحلة C++ على Coddy. الدرس 66 من 74.

إليك بعض عمليات المصفوفات الشائعة:

  • أوجد مجموع جميع العناصر في مصفوفة:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • أوجد متوسط العناصر في مصفوفة:
int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);
std::cout << "Average: " << average;
  • اعثر على العنصر الأكبر في مصفوفة:
int numbers[] = {1, 5, 2, 9, 3};
int max = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] > max) {
        max = numbers[i];
    }
}
std::cout << "Max: " << max;
  • اعثر على العنصر الأصغر في مصفوفة:
int numbers[] = {1, 5, 2, 9, 3};
int min = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] < min) {
        min = numbers[i];
    }
}
std::cout << "Min: " << min;
challenge icon

التحدي

سهل

أنشئ دالة باسم calculateStats تأخذ مصفوفة من الأعداد العشرية المزدوجة وحجم المصفوفة كمدخلات، وتنفّذ العمليات التالية:

  1. تحسب مجموع جميع العناصر في المصفوفة.
  2. تحسب متوسط عناصر المصفوفة.
  3. تعثر على أكبر عنصر في المصفوفة.
  4. تعثر على أصغر عنصر في المصفوفة.

يجب أن تُرجع الدالة مصفوفة من الأعداد العشرية المزدوجة تحتوي على المجموع والمتوسط والأكبر والأصغر، بهذا الترتيب.


ملاحظات مهمة:
  • استخدم المعامل size للتحكم في الحلقة: لا تستخدم std::size().
  • لتهيئة max وmin، اجعلهما يبدأان بقيمة arr[0]. يعمل هذا بشكل صحيح حتى عندما تحتوي المصفوفة على أعداد سالبة فقط.
  • يخصّص الكود المكتوب مسبقًا في main() بالفعل مصفوفة ديناميكية باستخدام new ويحررها باستخدام delete[]. ما عليك سوى تخصيص مصفوفة النتائج داخل دالتك باستخدام new double[4] وإرجاعها. ملاحظة: ستُشرح المؤشرات والذاكرة الديناميكية باستخدام new بالتفصيل في قسم لاحق. هنا عليك فقط اتباع النمط new double[4] الموضّح.

النهج المقترح:
  1. هيّئ sum = 0 وmax = arr[0] وmin = arr[0].
  2. كرّر من i = 0 إلى i < size، مع تجميع المجموع وتحديث max وmin عند الحاجة.
  3. احسب المتوسط باستخدام sum / size.
  4. خصّص مصفوفة جديدة باستخدام new double[4]، وخزّن النتائج الأربعة بالترتيب، ثم أعدها.

جرّب بنفسك

#include <iostream>

double* calculateStats(double arr[], int size) {
    // ستحتاج إلى حساب 4 قيم قبل تخزينها في newArr
    // هيّئ المتغيرات sum (تبدأ من 0)، وmax، وmin (يبدأ كلاهما من arr[0])
    // استخدم حلقة for للمرور على عناصر المصفوفة
    // داخل الحلقة:
    //   - أضف كل عنصر إلى sum
    //   - قارن كل عنصر بـ max وحدّث max إذا كان العنصر أكبر
    //   - قارن كل عنصر بـ min وحدّث min إذا كان العنصر أصغر
    // احسب average = sum / size (بعد انتهاء الحلقة)
    

    double* newArr = new double[4];
    newArr[0] = sum;
    newArr[1] = average;
    newArr[2] = max;
    newArr[3] = min;

    return newArr;
}

int main() {
    int n;

    std::cin >> n;
    std::cin.ignore();
    double arr[n];

    for (int i = 0; i < n; i++) {
        double val;
        std::cin >> val;
        arr[i] = val;
    }

    double* stats = calculateStats(arr, n);
    std::cout << "Sum: " << stats[0] << std::endl;
    std::cout << "Average: " << stats[1] << std::endl;
    std::cout << "Maximum: " << stats[2] << std::endl;
    std::cout << "Minimum: " << stats[3] << std::endl;
    delete[] stats;
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

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