عمليات المصفوفات الشائعة
جزء من قسم 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;التحدي
سهلقم بإنشاء دالة باسم calculateStats تأخذ مصفوفة من الأعداد العشرية (doubles) وحجم المصفوفة كمدخلات وتقوم بالعمليات التالية:
- حساب مجموع كل العناصر في المصفوفة.
- حساب متوسط العناصر في المصفوفة.
- إيجاد العنصر الأكبر في المصفوفة.
- إيجاد العنصر الأصغر في المصفوفة.
يجب أن تعيد الدالة مصفوفة من الأعداد العشرية (doubles) تحتوي على المجموع، المتوسط، الحد الأقصى، والحد الأدنى، بهذا الترتيب.
ملاحظات هامة:
- استخدم معامل
sizeللتحكم في الحلقة التكرارية (loop) الخاصة بك — لا تستخدمstd::size(). - لتهيئة
maxوmin، ابدأهما بـarr[0]— هذا يعمل بشكل صحيح حتى عندما تحتوي المصفوفة على أرقام سالبة فقط. - الكود المكتوب مسبقاً في
main()يقوم بالفعل بتخصيص مصفوفة ديناميكية باستخدامnewوتحريرها باستخدامdelete[]— ما عليك سوى تخصيص مصفوفة النتيجة داخل دالتك باستخدامnew double[4]وإعادتها.
النهج المقترح:
- قم بتهيئة
sum = 0، وmax = arr[0]، وmin = arr[0]. - قم بعمل حلقة تكرارية من
i = 0إلىi < size، مع تجميع المجموع وتحديث max/min حسب الحاجة. - احسب المتوسط كـ
sum / size. - قم بتخصيص مصفوفة جديدة باستخدام
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;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص