تسجيل الدخول

مشاهدة النسخة كاملة : تمرين صعب بلغة c


باك2013
2013-12-26, 17:50
السلام عليكم

عندي مشكلة وهي :
أني قمت بحل تمرين : (أكتب برنامج يطلب من المستخدم تاريخ اليوم ثم تظهر له تاريخ الغد ؟)

أنا قمت بحل التمرين ولكن توجد مشكلة بسيطة وهي أني استعملت if لمراقبة المستخدم في حالة ادخل قيمة خاطئة ، فعند ادخاله يوم خاطئ يخبره الحاسوب انه خاطئ وعند ادخاله الخطا للمرة الثانية يقبله الحاسوب !!!!

المطلوب :

هو برنامج يطلب من المستخدم تاريخ اليوم ثم يظهر له تاريخ الغد بشرط :
اذا أدخل قيم سالبة أو ايام اكبر من 30 في الشهر 4 او 6 او 9 او 11 ، او يوم أكبر من 31 في الاشهر 1 او 3 او 5 او 7 او 8 او 10 او 12
، او يوم أكبر من 29 في السنة الكبيسة ، او يوم أكبر من 28 في السنة غير الكبيسة

n-stein
2013-12-29, 00:16
#include <stdio.h> //by n-stine <artecgeek.blogspot.com> #tidjani

main()
{
int jj,mm,aa;
scanf("%i",&jj);
scanf("%i",&mm);
scanf("%i",&aa);
if ((aa>0)||(mm>0)||(jj>0))
{
if (aa%4==0)
{
if (mm<13)
{
if (mm==4||6||9||11)
{
if (jj>30)
printf("erreur");
else
{
if (jj<30)
printf("demain c'est : %i/%i/%i",jj+1,mm,aa);
else
printf("demain c'est : 1/%i/%i",mm+1,aa);
}
}
if (mm==1||3||5||7||8||10||12)
{
if (jj>31)
printf("erreur");
else
if (jj<31)
printf("demain c'est : %i/%i/%i",jj+1,mm,aa);
else
if (mm!=12)
printf("demain c'est : 1/%i/%i",mm+1,aa);
else
printf("demain c'est : 1/1/%i",aa+1);
}
if (mm==2)
if (jj<29)
printf("demain c'est : %i/%i/%i",jj+1,mm,aa);
else
printf("demain c'est : 1/3/%i",aa);
}
else
printf("erreur");
}
else
{
if (mm<13)
{
if (mm==4||6||9||11)
{
if (jj>30)
printf("erreur");
else
{
if (jj<30)
printf("demain c'est : %i/%i/%i",jj+1,mm,aa);
else
printf("demain c'est : 1/%i/%i",mm+1,aa);
}
}
if (mm==1||3||5||7||8||10||12)
{
if (jj>31)
printf("erreur");
else
if (jj<31)
printf("demain c'est : %i/%i/%i",jj+1,mm,aa);
else
if (mm!=12)
printf("demain c'est : 1/%i/%i",mm+1,aa);
else
printf("demain c'est : 1/1/%i",aa+1);
}
if (mm==2)
if (jj<28)
printf("demain c'est : %i/%i/%i",jj+1,mm,aa);
else
printf("demain c'est : 1/3/%i",aa);
}
else
printf("erreur");
}
}
else
printf("erreur");
}

Abe_Sparrow
2014-01-04, 15:08
يبدو ان المشكل هي غياب طريقة لإعادة البرنامج إلى البداية في حالة الخطأ. يمكنك وضع حلقة بها اختبار لتنفيذ البرنامج أو الخروج في البداية، ثم تضع باقي التعليمات التي كتبتها داخلها. أي أنه عند وجود خطأ سيعود مؤشر التعليمات إلى البداية ويعيد المراقبة من جديد.