الثلاثاء، 28 يوليو 2015

بنيات التحكم - ( Control Structures(switch



تأخذ جملة switch في++C الشكل العام التالي:-
Switch (Variable name)
{
case constant1 : statement1; break;
case constant2 : statement2; break;
.
.
case constant n : statement n; break;
default : last statement;
}

تتألف العبارة switch من الكلمة الأساسية switch يليها اسم متغير بين قوسين، ثم جسمها بين أقواس حاصرة ، تفحص العبارة switch المتغير وتوجه البرنامج نحو أقسام مختلفة وفقاً لقيم ذلك المتغير.
يتضمن جسم العبارة switch عدداً من الوسوم وهي أسماء تليها نقطتان. تتألف هذه الوسوم من الكلمة الأساسية case ثم ثابت ثم نقطتين.
عندما تكون قيمة متغير العبارة switch مساوية للثابت المذكور في أحد وسوم case ينتقل التنفيذ إلى العبارات التي تلي ذلك الوسم وتؤدى العبارة break إلى منع تنفيذ بقية العبارة switch، وإذا لم تتطابق قيمة متغير العبارة switch مع أي وسم ينتقل التنفيذ إلى الوسم الافتراضي default .
سنقوم بكتابة برنامج لحساب عدد حروف العلة (vowels letters) وهي (a, e, i, u, o) في نص مدخل من لوحة المفاتيح . يقوم البرنامج بفحص الحرف المدخل فإذا كان الحرف a تتم إضافة 1 إلى acounter والذي تم تمهيده عند 0 . أما إذا كان الحرف المدخل e فتتم إضافة 1 إلى ecounter وهكذا بالنسبة لـ u و i و o ، إذا لم يكن الحرف المدخل حرف علة يتم تنفيذ الوسم الافتراضي والذي يقوم بإضافة 1 لـ OtherLettersCounter.


//Program 2-4:
#include <iostream.h>
enum vowels{a='a',u='u',i='i',o='o',e='e'};
main( )
{
char ch ;
int acounter=0,ecounter=0,icounter=0;
int ucounter=0,ocounter=0,otherletterscounter=0;
while(cin>>ch)
switch(ch) {
case a:
++acounter;
break;
case e:
++ecounter;
break;
case i :
++icounter;
break;
case o:
++ocounter;
break;
case u:
++ucounter;
break;
default:
++ otherletterscounter;
};
cout<<endl;
cout<<endl;
cout<<endl;
cout <<"acounter: \t"<<acounter<<" \n";
cout<< "ecounter: \t"<<ecounter<<" \n";
cout<< "icounter: \t"<<icounter<<" \n";
cout<< "ocounter: \t"<<ocounter<<" \n";
cout<< "ucounter: \t"<<ucounter<<" \n";
cout<<"otherletterscounter: \t"<<otherletterscounter
       <<" \n";
return 0;
}

الخرج من البرنامج بافتراض أن النص المدخل  "youareverypunctional"
acounter:         2
ecounter:         2
icounter:         1
ocounter:         2
ucounter:         2
OtherLettersCounter:         11























ليست هناك تعليقات:

إرسال تعليق