ahmed.o.mohamed

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

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

السلام عليكم

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

اكتب دالة تعاودية أو تراجعية (Recursive function) تقوم بالتحقق من إدخال عدد صحيح عن طريق الكيبورد, الدالة يجب أن تستدعي نفسها إذا كانت المُدخلات خاطئة.

يجب أن تستقبل الدالة 3 وسائط :

  • الرسالة التي يجب إظهارها قبل قراءة القيمة المُدخلة. (الرسالة التي تطلب من المستخدم إدخال قيمة يجب أن تصدر من الدالة و ليس من الــ main)
  • عنوان المتغير الهدف.
  • العدد الأقصى لمحاولات الإدخال.

تُعيد الدالة 0 إذا تم إدخال قيمة صحيحة قبل أن تنتهي محاولات الإدخال و -1 في الحالة المعاكسة.

مثال :

post-219439-046507800 1348444936_thumb.p

post-219439-022262100 1348444941_thumb.p

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

1

شارك هذا الرد


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

الحمد لله ...هذه محاولتي ...

جزاك الله خيرا اخي احمد

#include<cstdio>
int recursev(const char a[],char*b,int c)
{
printf(a);
scanf("%s",b);
for(int i=0;b[i];i++)
if(b[i]<'0'||b[i]>'9')
{
if(c)
return recursev(a,b,--c);
else
{
printf("Sorry __You have reach the maximum tries!\n");
return -1;
}
}
printf("Success Input For %s\n",b);
return 0;
}
main()
{
const char a[]="Please Enter A Value :";
char b[10];
int numberOfTries=5;
recursev(a,b,numberOfTries);
return 0;
}

بالتوفيق للجميع

0

شارك هذا الرد


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

محاولتي :

#include <stdio.h>
#define LG_LIG 20

int main() {
int lecture(char *, int *, int);
int n;
const int nessais = 5;

if (lecture("donnez un nombre entier : ", &n, nessais) != -1)
printf("-- merci pour %d", n);
else
printf("-- nombre d'essais dépassés");

return 0;
}

int lecture(char * mes, int * p, int nmax) {
int compte;
char ligne [LG_LIG];
printf("%s", mes);
fgets(ligne, LG_LIG, stdin);
compte = sscanf(ligne, "%d", p);
if (!compte)
if (--nmax)
return (lecture("** réponse incorrecte - redonnez la : ", p, nmax));
else
return (-1);
else
return (0);
}

0

شارك هذا الرد


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

تم منح النقاط للمشاركات المفيدة.

يُغلق.

أراكم في الجزء السادس من الحلقة الخامسة.

0

شارك هذا الرد


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

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

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