عمليات المصفوفات الشائعة
جزء من قسم الأساسيات في رحلة C++ على Coddy. الدرس 66 من 74.
إليك بعض عمليات المصفوفات الشائعة:
- أوجد مجموع جميع العناصر في مصفوفة:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
sum += number;
}
std::cout << "Sum: " << sum;- أوجد average لعناصر في array:
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 تأخذ array من القيم من النوع double وحجم array كمدخلات، وتنفّذ العمليات التالية:
- تحسب sum لجميع العناصر في array.
- تحسب المتوسط الحسابي لعناصر array.
- تجد العنصر الأقصى في array.
- تجد العنصر الأدنى في array.
يجب أن تُرجع الدالة array من القيم من النوع double، وتحتوي بالترتيب على sum والمتوسط والأقصى والأدنى.
ملاحظات مهمة:
- استخدم معامل
sizeللتحكم في loop: لا تستخدمstd::size(). - لتهيئة
maxوmin، ابدأ بهما بالقيمةarr[0]. يعمل ذلك بشكل صحيح حتى عندما تحتوي array على أرقام سالبة فقط. - الكود المكتوب مسبقًا في
main()يخصّص array ديناميكية باستخدامnewويحرّرها باستخدامdelete[]. ما عليك سوى تخصيص array النتيجة داخل دالتك باستخدامnew double[4]وإرجاعها. ملاحظة: سيتم تقديم المؤشرات والذاكرة الديناميكية باستخدامnewبالتفصيل في قسم لاحق. هنا ما عليك سوى اتباع النمطnew double[4]الموضّح.
النهج المقترح:
- هيّئ
sum = 0وmax = arr[0]وmin = arr[0]. - نفّذ loop من
i = 0إلىi < size، مع تجميع sum وتحديث max/min عند الحاجة. - احسب المتوسط باعتباره
sum / size. - خصّص array جديدة باستخدام
new double[4]، وخزّن النتائج الأربعة بالترتيب، ثم أرجعها.
جرّب بنفسك
#include <iostream>
double* calculateStats(double arr[], int size) {
// ستحتاج إلى حساب 4 قيم قبل تخزينها في newArr
// قم بتهيئة المتغيرات لـ sum (ابدأ من 0)، و max، و min (كلاهما يبدأ من arr[0])
// استخدم حلقة for للتكرار عبر المصفوفة
// داخل الحلقة:
// - أضف كل عنصر إلى sum
// - قارن كل عنصر مع max وحدّثه إذا كان أكبر
// - قارن كل عنصر مع 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;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوصتدرّب بنفسك: مترجم C++ عبر الإنترنت