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] وإعادتها.

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

ورقة مرجعية

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

مجموع كل العناصر:

int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}

متوسط العناصر:

int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);

العنصر الأكبر (Maximum):

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];
    }
}

العنصر الأصغر (Minimum):

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];
    }
}

جرّب بنفسك

#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