مراجعة: التنقل في المصفوفة باستخدام المؤشرات
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 11 من 63.
التحدي
سهلاكتب برنامجاً بلغة C ينفذ دالة لحساب مجموع كل العناصر في مصفوفة صحيحة (integer array) باستخدام حسابيات المؤشرات (pointer arithmetic) وتكافؤ المصفوفة والمؤشر. يجب أن يقوم برنامجك بما يلي:
- إنشاء دالة باسم
calculateSumتأخذ معاملين:- مؤشر إلى عدد صحيح (
int *arr) يمثل المصفوفة - عدد صحيح (
size) يمثل عدد العناصر في المصفوفة
- مؤشر إلى عدد صحيح (
- داخل دالة
calculateSum:- تهيئة متغير
sumبالقيمة 0 - إنشاء متغير مؤشر
ptrوضبطه ليشير إلى بداية المصفوفة - استخدام حلقة (loop) للمرور عبر المصفوفة باستخدام حسابيات المؤشرات
- في كل تكرار، أضف القيمة التي يشير إليها
ptrإلىsum - زيادة المؤشر للانتقال إلى العنصر التالي
- إرجاع المجموع المحسوب
- تهيئة متغير
- في دالة
main:- قراءة عدد صحيح
nيمثل حجم المصفوفة - الإعلان عن مصفوفة صحيحة بحجم
n - قراءة
nمن الأعداد الصحيحة من المدخلات لملء المصفوفة - استدعاء دالة
calculateSumمع المصفوفة وحجمها - طباعة النتيجة بالتنسيق التالي: "Sum: [value]"
- قراءة عدد صحيح
يجب أن تستخدم الدالة حسابيات المؤشرات للتنقل عبر المصفوفة - لا تستخدم تدوين فهرسة المصفوفة مثل arr[i]. بدلاً من ذلك، استخدم عمليات إلغاء المرجعية (dereferencing) والزيادة (increment) للوصول إلى عناصر المصفوفة.
على سبيل المثال، إذا كانت المدخلات هي:
5
10 20 30 40 50يجب أن تكون مخرجاتك:
Sum: 150يختبر هذا التحدي فهمك لكيفية قبول الدوال للمصفوفات كمعاملات مؤشر، وكيفية استخدام حسابيات المؤشرات للتنقل عبر المصفوفات بكفاءة، وكيف يتم تحويل أسماء المصفوفات تلقائياً إلى مؤشرات عند تمريرها إلى الدوال.
جرّب بنفسك
#include <stdio.h>
// TODO: اكتب دالة calculateSum الخاصة بك هنا
int main() {
int n;
scanf("%d", &n);
int arr[n];
// قراءة عناصر المصفوفة
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// TODO: استدعِ دالة calculateSum وقم بتخزين النتيجة
// TODO: اطبع النتيجة بالتنسيق "Sum: [value]"
return 0;
}جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية