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

سؤال عن ال switch

مغلق
بدأه IrOn-MasK في 13 ديسمبر 2006 · 10 رد · 890 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

سؤالي بخصوص الـ switch ..

#include<iostream>

using namespace std;


int main(){

	char grade;

	cin >> grade;

	switch ( grade ) {

		case 'A': cout << "\n grade is A";
		break;

		case 'B': cout << "\n grade is B";
		break;

		case 'c': cout << "\n grade is C";
		break;

		case 'd': cout << "\n grade is D";
		break;

		case 'F': cout << "\n grade is F";
		break;

		default: cout << "\n The grade is invalid";
		break;

	}
	cout << "\n FINISH";

	getch ();

	return 0;
}

الكود الذي أقوم بكتابته مشابه للكود اعلاه و لكني أريد أن أغير الـ A مثلاً لكلمة كاملة ،،

مع العلم أنه من المفترض أن لا أستخدم مصفوفة في البرنامج

شكراً لكم مسبقاً و أخص بالشكر الأخ Khaled.Alshaya على تعوانه الكبير ..

#2

لا يمكن وضع كلمة كاملة (String أو مصفوفة من الحروف ) في جمل case

لأنها لا تقبل

يمكن إشتخدام if-statement

#3

b.m.s

نعم فعلاً ،، فلم تقبل وقد وجدت ما يطابق كلامك في أحد الكتب المرجعية ..

شكراً لك ..

ولكن لك هذا الكود .. :D

#include<iostream.h>
#include<conio.h>
int main()
{
clrscr();
char country,question;
int i;
do
{
cout<<"Enter The book price :"<<endl;
cin>>i;
cout<<"Enter The Country :"<<endl;
cin>>country;
switch(country)
{
case 'C':
{
if(i<10)
cout<<"The shipping price is 3$"<<endl;
else
cout<<"The shipping price is 4$"<<endl;
}
break;
case 'U':cout<<"The shipping price is 5$"<<endl;
break;
case 'M':
{
if(i<10)
cout<<"The shiping price is 3$"<<endl;
else
cout<<"The shipping price is 4$"<<endl;
}
break;
default: cout<<"Unlisted Country"<<endl;
break;
}

cout<<"Do you want to continue (Y/N)?"<<endl;
cin>>question;
}
while(question=='Y');
getch ();
return 0;
}

في الكود السابق واجهت مشكلة و هي الحلقة do -While فمن المفترض ان تعمل علي إدخال البرنامج في حلقة تستمر كل ما أجبت على السؤال بـ Y و لكن دون جدوى :(

#4

جربت البرنامج و هو يدخل في حلقه مستمره عند وضع Y ربما أنت تضغط على y و ليس Y

في برنامجك الأولي لاحظت أنك لا تهتم بالحروف الكبيره و الحروف الصغيره عند استخدامك لل case

تم تعديل هذه المشاركة بواسطة Yousof في 14 ديسمبر 2006 في 11:07

#5

Yousof

أضغط Y ودون فائدة ..!

كما أني اأخد بالحسبان الفرق بين الحروف الكبيرة و الصغيرة ،،

و البرنامج الأول لم أكتبه أنا بل هو لأحد الأخوة في المنتدى ووضعته فقط لأشرح ما أريد أن أفعل ..

#6

أنا جربت البرنامج و كان شغال عال العال :)

#7

:(

#8

ممكن أسألك ماذا تدخل حينما يطلب منك البرنامج ادخال country

#9

USA-Canda-Mexico

وطبعاً في حالة طبعت غيره حتروه الـسويتش للديفلت ... و اللي هوا Unlistd country

#10
IrOn-MasK كتب:
USA-Canda-Mexico

وطبعاً في حالة طبعت غيره حتروه الـسويتش للديفلت ... و اللي هوا Unlistd country

هنا يكمن الخطأ .. لازم تدخل حرف واحد و ليس string

يعني برنامجك مخول لأن يقرأ حرف واحد فقط لأنك عرفت ال country as char

أدخل حرف واحد و سترى انه شغال عال العال ..

تم تعديل هذه المشاركة بواسطة Yousof في 15 ديسمبر 2006 في 13:17

#11

نعم فعلاً ... لقد أشتغل

و لكن أخي ،، ما كنت أظنه أنهم عندما تعرف مدخل على أنه char ، فإن الـcompiler سيأخد أول حرف من هذا المدخل ليقارنه

بمعني أن الـ compiler سيتفحص الحرف الأول فقط ولا ينظر للبقية ،، بإعتبار أن المدخل قد تم تعريفه char أي خانة واحدة فقط ..

أليس صحيحاً ؟

وكيف أتمكن من إدخال الكلمة كاملة و في نفس الوقت تشتغل الـ loop ؟

تم تعديل هذه المشاركة بواسطة IrOn-MasK في 15 ديسمبر 2006 في 19:40

هذا الموضوع مغلق.

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