Meriam Drawshy نشر 30 يناير 2021 أرسل تقرير نشر 30 يناير 2021 (معدل) سؤال:(سؤال الأول) اكتب عملية تراجعية تتلقى عدد صحيح وموجب على العملية ان تطبع العدد بشكل عكسي. مثال: اذا كان العدد 1897 على العملية ان تطبع 7981. سؤال:(سؤال الثاني) اكتب عملية تراجعية تتلقى عددين x و y على العملية ان تعيد xللقوه y. شكرا جزيلا. تم التعديل في 30 يناير 2021 بواسطة Wael Aljamal توضيح السؤال 1 اقتباس
0 Wael Aljamal نشر 30 يناير 2021 أرسل تقرير نشر 30 يناير 2021 مرحبا ميريام، سأقدم شرح مساعد لكيفية الحل وعليكِ إكمال الشيفرة البرمجية. المسألة الأولى: نريد طباعة العدد بالمقلوب أي من الخانة الأعلى للأقل .. يجب على الدالة التراجعية التحرك خانة خانة على العدد (القسمة على 10 في كل مرة تنقلنا من الآحاد للعشارت للمئات ..) و عملية طباعة الخانة الحالية سوف تتمثل بقيمة باقِ قسمة العدد على 10. ضمن الدالة العودية سنقوم باستدعائها عدة مرات للعدد n حيث في كل مرحلة سوف نقسمه على 10 ونمرر الناتج للخطوة التالية. n = 123 => n / 10 = 12 => n / 10 = 1 => n / 10 = 0 وعند وضع تعليمة الطباعة بعد إنتها الاستدعائات العودية سوف تتم عملية طباعة النتائج بالمقبوب (يمكنك تجريب وضع الطباعة قبل الاستدعاء العودي و رؤية الفرق). ما هو شرط توقف الاستدعاء العودي؟ حين يصبح العدد n مساوٍ للصفر. أرجو محاولة كتابة الدالة قبل رؤية الحل.. . void printReverse (int n) { if (n == 0) return; printReverse(n/10); cout << n % 10; } ------------------------------------------ المسألة الثانية: لدينا دالة ستقوم بعمل جداء تراكمي لعدد X بعدد مرات Y. سيكون لدينا وسيطين للدالة هما العديين X - Y سيتم استدعاء الدالة Y مرة , ولكل مرة سنقوم بعملية ضرب للعدد X مع ناتج الضرب التراكمي للاستدعاءات الآخرى.. سنعتمد على Y كعداد لمرات الضرب. ما هو شرط توقف الاستدعاء العودي؟ حين يصبح العدد Y مساوٍ للصفر. نعيد القيمة 1 لأن X أس 0 تساوي 1. مع تكرار الاستدعاءات سيتم حساب 1 * X و تعيد X للمرحلة السابقة ومن ثم ستعيد ضربها بـ X وهكذا بعدد مرات Y. يمكنك استخدام نمط بيانات long long لحساب قيمة أكبر لتجنب حدوث Overflow (النمط int لا يسع إلا قيمة بحدود 2 مليار) أما long يتسع لأضعاف هذه القيمة حتى 18^10. أرجو محاولة كتابة الدالة قبل رؤية الحل.. . int my_power (int x, int y) { if (y == 0) return 1; return x * my_power(x,y-1); } بالتوفيق 1 اقتباس
السؤال
Meriam Drawshy
سؤال:(سؤال الأول)
اكتب عملية تراجعية تتلقى عدد صحيح وموجب على العملية ان تطبع العدد بشكل عكسي.
مثال: اذا كان العدد 1897 على العملية ان تطبع 7981.
سؤال:(سؤال الثاني)
اكتب عملية تراجعية تتلقى عددين x و y على العملية ان تعيد xللقوه y.
شكرا جزيلا.
تم التعديل في بواسطة Wael Aljamalتوضيح السؤال
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.