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

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

جزء من قسم Fundamentals في رحلة 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 تأخذ مصفوفة من الأعداد العشرية (doubles) وحجم المصفوفة كمدخلات وتقوم بالعمليات التالية:

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

يجب أن تعيد الدالة مصفوفة من الأعداد العشرية (doubles) تحتوي على المجموع، والمتوسط، والحد الأقصى، والحد الأدنى، بهذا الترتيب.


ملاحظات هامة:
  • استخدم معامل size للتحكم في الحلقة التكرارية (loop) الخاصة بك — لا تستخدم 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
    // قم بتهيئة متغيرات للمجموع (تبدأ من 0)، والحد الأقصى، والحد الأدنى (كلاهما يبدأ من arr[0])
    // استخدم حلقة for للتكرار عبر المصفوفة
    // داخل الحلقة:
    //   - أضف كل عنصر إلى المجموع
    //   - قارن كل عنصر بالحد الأقصى وقم بالتحديث إذا كان أكبر
    //   - قارن كل عنصر بالحد الأدنى وقم بالتحديث إذا كان أصغر
    // احسب المتوسط = المجموع / الحجم (بعد الحلقة)
    

    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اختبر نفسك

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

جميع دروس Fundamentals