الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف استخدم ال Range

بدأه MioOmh في 12 مايو 2010 · 7 رد · 628 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

في كود السويتش اذاأردت ان اكتب

عندما يكون العمر من 5 الى 7 ادخل في هذا الكيس

وعندما يكون من 8 الى 10

والكيس الثالثة من عمر 11 الى 14

بعد ذلك في الديفولت اذا ادخل عمر غير موجود في هذه الحالات اريده ان يعرض ان عمرك لايوجد له اختبار

سؤالي كيف اقول له اني اريد من هذا العمر الى هذا العمر ( المدى ) ؟

ووايضا الديفولت عندما وضعت cout لم تعمل ؟!

اذا ممكن توضيح ...

وشكرا مقدما

#2
switch(age)
{
	case 5:
	case 6:
	case 7:
		//Do something
		break;
	case 8:
	case 9:
	case 10:
		//Do something
		break;
	case 11:
	case 12:
	case 13:
	case 14:
		//Do something
		break;
	default:
		cout<<"You must enter a number between 5 and 14\n";
		break;
}

حيث استعملنا خاصية fallthrow والتي تعني أنه عند تحقق حالة ما، فسيتم تنفيذها مع كل ما يليها حتى يجد break، وهكذا تمكنا من صنع مجال بهذه الطريقة، فإن تم اختيار أي رقم من الـ5 إلى الـ7 فسيتم تنفيذ الأمر الخاص بالـ7، وهكذا.

بالتوفيق

تم تعديل هذه المشاركة بواسطة Abboodd في 12 مايو 2010 في 17:37

4

هذه الجملة خاطئة  :wacko: 


#3

السلام عليكم : طريقة عبودي صحيحة وهناك طريقة أخرى.

# include <iostream>
using namespace std;
int main()
{
int age; 	

while(1)
{
cout<<"Enter Your age:"; cin>>age;	
switch(age){
 	case 5 ... 7:
 	cout<<age<<" 5 ... 7\n"; 	
 	break;

 	case 8 ... 10:
 	cout<<age<<" 8 ... 10\n"; 	

 	break;
 	case 11 ... 14:
 	cout<<age<<" 11 ... 14 \n"; 	

 	break;
 	default:
 	cout<<age<<" d\n"; 	
 	cout<<"You must enter a number between 5 and 14\n";

}
}

	return 0 ;
}
3
tvquran_6.gif

#4

جزاك الله كل خير أستاذ فهد، لم أكن أعلم بوجود هذه الطريقة، وهي بالفعل عملية أكثر، وخصوصاً مع المجالات الكبيرة.

فجزاك الله كل خير :)

هذه الجملة خاطئة  :wacko: 


#5

قمت بتطبيق الكود الذي كتبه اخي Abboodd

اما كود الأخ فهد يظهرلي خطأ في الساينتكس !؟

ولكن هناك ايرور يظهر بخصوص الديفولت

Error 1 error C2361: initialization of 'error' is skipped by 'default' label

لم استطع تعديله !؟

تم تعديل هذه المشاركة بواسطة MioOmh في 12 مايو 2010 في 19:31

#6

نعم الطريقة التي وضعتها لا تعمل مع vc++ لكن تعمل مع gcc

تم تعديل هذه المشاركة بواسطة فهدالشلوي في 12 مايو 2010 في 20:18

tvquran_6.gif

#7
اقتباس

ولكن هناك ايرور يظهر بخصوص الديفولت

Error 1 error C2361: initialization of 'error' is skipped by 'default' label

لم استطع تعديله !؟

يبدو أنك تقوم بتعريف متغير في إحدى جمل case... لتفادي هذا الخطأ، قم بتعريف المتغير error قبل بداية جملة switch، أو في جملة case التي عرفت فيها المتغير error، ضع قوسي { }، ليصبح كالتالي مثلاَ:

case 10:
{
    int error
    ....
}

والله أعلم.

الأستاذ فهد، لدي سؤال: لماذا تضيف GNU في مترجمها إمكانيات غير قياسية؟ كما أن هذه الصفات مفيدة جداً وعملية، فلماذا لا يتم اعتمادها كمواصفات قياسية وتوفيرها في المترجمات الأخرى؟

جزاك الله خيراً

تم تعديل هذه المشاركة بواسطة Abboodd في 13 مايو 2010 في 14:38

هذه الجملة خاطئة  :wacko: 


#8

ضبط الديفوولت :)

شكررا جزيلا لك لتنبيهي لمكان تعريف المتغيرات

...

مواضيع مشابهة