ahmed.o.mohamed

اختبر قدراتك في C/CPP - الحلقة الخامسة, الجزء السادس

8 ردود في هذا الموضوع

السلام عليكم

الحلقة الأولى.

الحلقة الثانية - الجزء الأول.

الحلقة الثانية - الجزء الثاني.

الحلقة الثانية - الجزء الثالث.

الحلقة الثانية - الجزء الرابع.

الحلقة الثانية - الجزء الخامس.

الحلقة الثانية - الجزء السادس و الأخير.

الحلقة الثالثة - الجزء الأول.

الحلقة الثالثة - الجزء الثاني.

الحلقة الثالثة - الجزء الثالث.

الحلقة الثالثة - الجزء الرابع.

الحلقة الثالثة - الجزء الخامس و الأخير.

الحلقة الرابعة - الجزء الأول.

الحلقة الرابعة - الجزء الثاني.

الحلقة الرابعة - الجزء الثالث.

الحلقة الرابعة - الجزء الرابع.

الحلقة الرابعة - الجزء الخامس.

الحلقة الرابعة - الجزء السادس.

الحلقة الرابعة - الجزء السابع.

الحلقة الرابعة - الجزء الثامن.

الحلقة الرابعة - الجزء التاسع.

الحلقة الرابعة - الجزء العاشر.

الحلقة الرابعة - الجزء الحادي عشر.

الحلقة الرابعة - الجزء الثاني عشر.

الحلقة الرابعة - الجزء الثالث عشر.

الحلقة الرابعة - الجزء الرابع عشر.

الحلقة الرابعة - الجزء الخامس عشر.

الحلقة الرابعة - الجزء السادس عشر.

الحلقة الرابعة - الجزء السابع عشر.

الحلقة الرابعة - الجزء الثامن عشر.

الحلقة الرابعة - الجزء التاسع عشر.

الحلقة الرابعة - الجزء العشرون و الأخير.

الحلقة الخامسة - الجزء الأول.

الحلقة الخامسة - الجزء الثاني.

الحلقة الخامسة - الجزء الثالث.

الحلقة الخامسة - الجزء الرابع.

الحلقة الخامسة - الجزء الخامس.

مرحبا بكم إخوتي الكرام في الجزء السادس من الحلقة الخامسة من سلسلة اختبر قدراتك, قمتُ بتقسيم الحلقة الخامسة إلى عدة أجزاء, مُرتبة حسب الصعوبة.

أجزاء هذه الحلقة ستكون خاصة بمتفرقات C/C++.

الإختبار الخامس (الجزء السادس) :

اكتب دالة تعاودية أو تراجعية (Recursive function) تقوم بحساب post-219439-008722900 1348556302_thumb.p حيث عدد x حقيقي و y عدد صحيح.

مثال :

post-219439-093211100 1348556646_thumb.p

post-219439-020307700 1348556651_thumb.p

سأضع حل السؤال بعد إنتهاء عرض المحاولات.

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أظنني سأبدأ بمحاولتي هذه المرة :happy:

#include <stdio.h>

int main() {
int n;
double x, puissance(double, int);
printf("Donnez une valeur réelle : ");
scanf("%le", &x);
printf("Donnez une puissance entière : ");
scanf("%d", &n);
printf("%le à la puissance %d = %le", x, n, puissance(x, n));
}

double puissance(double x, int n) {
double z;
if (n < 0) return (puissance(1.0 / x, -n));
else if (n == 0) return (1);
else if (n == 1) return (x);
else if (n % 2 == 0) {
z = puissance(x, n / 2);
return (z * z);
} else return (x * puissance(x, n - 1));
}

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

سؤال جميل جدا جازك الله خيرا أخي أحمد ...

هذه محاولتي البسيطة :

#include <iostream>

using namespace std;
float pow(float a,int b)
{
if(b==0)return 1;
return a*pow(a,b-1);
}
int main() {
printf("%f\n",pow(5,2));
return 0;

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ما هذه المحاولة أخي مصطفى ؟ :blink:

الدالة printf ليست موجودة في المكتبة iostream بل cstdio ! ثم لماذا قمتَ بتضمين مساحة الأسماء std و الكود مكتوب على طريقة الــ Old-Style ؟

أيضا, ستحدث كوارث لبرنامجك عندما تأخذ b قيمة سالبة !

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

سأكون على جناج سفر الليلة إن شاء الله, سأنقطع عن المنتدى لعدة أشهر نظراً لانشغالي التام في الأشهر المقبلة.

سأستكمل بقية حلقات السلسلة عند عودتي إن شاء الله.

لا تنسوني من صالح الدعاء.

أخوكم أحمد.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
الدالة printf ليست موجودة في المكتبة iostream بل cstdio

والمكتبة cstdio مضمنة ضمن iostream ألا تعلم هذا happy.gifhappy.gif

ثم لماذا قمتَ بتضمين مساحة الأسماء std و الكود مكتوب على طريقة الــ Old-Style ؟

هذا macro أكتبه عند أي برنامج (ولم أنتبه له .. هنا)

أيضا, ستحدث كوارث لبرنامجك عندما تأخذ b قيمة سالبة !

معك حق في هذه laugh.giflaugh.gif

سأكون على جناج سفر الليلة إن شاء الله, سأنقطع عن المنتدى لعدة أشهر نظراً لانشغالي التام في الأشهر المقبلة.

سأستكمل بقية حلقات السلسلة عند عودتي إن شاء الله.

لا تنسوني من صالح الدعاء.

أخوكم أحمد.

وفقك الله وسدد خطاك ... أظن أن كل من في المنتدى دون استثاء يتمنى لك التوفيق ...

أسأل الله أن يعينك في كل خطوة ويوفقك في كل مراد ...

والسلام عليكم ورحمة الله وبركاته

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

كود سي++

#include <iostream>
using namespace std;

double pooow(double x, int y) {
if (y < 0)
return (pooow(1.0 / x, -y));
else if (y == 0)
return 1;
else if (y == 1)
return x;
else
return (x * pooow(x, y - 1));
}

int main() {
double x = 0.0;
int y = 0;
cout << "Enter x: "; cin >> x;
cout << "Enter y: "; cin >> y;
cout << pooow(x, y);

return 0;
}

المخرجات

Enter x: 5
Enter y: 3
125
RUN SUCCESSFUL (total time: 3s)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

#include <stdio.h>

long _pow_pui(int , int);

int main()
{
printf("%ld",_pow_pui(2,3));
return 0;
}


long _pow_pui(int a, int b)
{
if(!b) return 1;
else if(!(b^1)) return a;
else
{
b--;
return (a* _pow_pui(a,b));
}
}

سأكون على جناج سفر الليلة إن شاء الله, سأنقطع عن المنتدى لعدة أشهر نظراً لانشغالي التام في الأشهر المقبلة.

أتمنى لك التوفيق و سننتظر عودتك إلينا بفارغ الصبر مع أمنياتنا لك بالنجاح :cool:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .