تحسين كود C: حساب العدد المقلوب والتحقق من المساواة
في البداية، يظهر أن لديك بعض الأخطاء البرمجية في الشيفرة التي قد تؤثر على تنفيذ البرنامج بشكل صحيح. سأقدم لك شرحاً مفصلاً للأخطاء وسأقدم توجيهات لتحسين الكود.
في الكود الحالي، يوجد عدة أخطاء يجب تصحيحها:
-
في دالة
Equality
، يوجد خطأ في استخدام الدوالReversed
وnum
في الشرط الذي يقارن بينهما. يفضل استخدام الدالةReversed
بشكل منفصل وتخزين القيمة المقلوبة في متغير آخر. -
توجد أخطاء في الدوال
Reversed
وEquality
في التعريفات الأولية للدوال. يجب تحديد نوع البيانات للمتغيرات والقيم المرتجعة. على سبيل المثال، يجب تعديلEquality(num)
إلىint Equality(int num)
. -
يجب تصحيح النهايات المفتوحة للتعليمات البرمجية، مثل إضافة السطور المناسبة بعد الجملة
return 0;
في دالةmain
وبعد التعليمات البرمجية في دالةEquality
. -
يفضل إعطاء اسماء أوضح للمتغيرات، مثل تغيير اسم
numb
إلىoriginalNumber
وreve
إلىreversedNumber
.
تصحيح الأخطاء في الشيفرة يمكن أن يكون كالتالي:
c#include
int Reversed(int num);
int Equality(int num);
int main() {
int num, result;
printf("Please enter a number that has five digits:");
scanf("%d", &num);
result = Equality(num);
return 0;
}
int Reversed(int num) {
int originalNumber = num;
int reversedNumber = 0;
int digit;
do {
digit = num % 10;
reversedNumber = reversedNumber * 10 + digit;
num = num / 10;
} while (num > 0);
return reversedNumber;
}
int Equality(int num) {
int reversedNumber = Reversed(num);
int originalNumber = num;
if (originalNumber == reversedNumber)
printf("The number equals the reversed number");
else
printf("The number doesn't equal the reversed number");
return 0;
}
هذه الشيفرة المصححة يمكنها الآن قراءة عدد خمسة أرقام من المستخدم وتنفيذ الوظائف المطلوبة بشكل صحيح.
المزيد من المعلومات
تبدو الشيفرة المصححة أكثر دقة الآن، ولكن هناك بعض النقاط التي يمكن أن نضيف إليها لتحسين الكود وجعله أكثر فعالية ووضوحًا.
-
التعليقات:
قم بإضافة تعليقات إلى الشيفرة لشرح الخطوات الرئيسية والتفاصيل المهمة. هذا يساعد في فهم الكود بشكل أفضل ويجعله أسهل للآخرين قراءته.c// دالة للحصول على العدد المقلوب int Reversed(int num); // دالة للتحقق من مساواة العدد الأصلي والعدد المقلوب int Equality(int num);
-
التفاصيل الداخلية للدوال:
في التعليمات البرمجية الخاصة بالدوال، قم بإضافة تعليقات تشرح الخطوات الداخلية لكل دالة.cint Reversed(int num) { // متغير لتخزين العدد الأصلي int originalNumber = num; // متغير لتخزين العدد المقلوب int reversedNumber = 0; // متغير لتخزين الرقم الحالي int digit; // حلقة لحساب العدد المقلوب do { digit = num % 10; reversedNumber = reversedNumber * 10 + digit; num = num / 10; } while (num > 0); return reversedNumber; }
cint Equality(int num) { // حصول على العدد المقلوب باستخدام دالة Reversed int reversedNumber = Reversed(num); // العدد الأصلي int originalNumber = num; // التحقق من مساواة العددين وطباعة النتيجة if (originalNumber == reversedNumber) printf("The number equals the reversed number"); else printf("The number doesn't equal the reversed number"); return 0; }
-
التحقق من صحة الإدخال:
يمكنك إضافة التحقق من صحة الإدخال للتأكد من أن المستخدم أدخل عددًا صحيحًا ويحتوي على خمسة أرقام.cprintf("Please enter a five-digit number:"); if (scanf("%d", &num) != 1 || num < 10000 || num > 99999) { printf("Invalid input. Please enter a valid five-digit number."); return 1; // يشير إلى خطأ في الإدخال }
بتنفيذ هذه الإضافات، يصبح الكود أكثر وضوحًا ويسهل فهمه، مما يساعد في الصيانة المستقبلية وتسهيل التعاون مع الآخرين.