C++ tilidagi tanlash operatorida e’lon operatorlari ham uchrashi mumkin. Lekin switch operatori bajarilishida «Sakrab o‘tish» holatlari bo‘lishi hisobiga blok ichidagi ayrim e’lonlar bajarilmasligi va buning oqibatida dastur ishida xatolik ro‘y berishi mumkin:
int k=0,n=0;
cin>>n;
switch (n)
{
int=10; //xato,bu operator hech qachon bajarilmaydi
case 1:
int j=20; //agar n=2 bo‘lsa,bu e’lon bajarilmaydi
case 2:
k+=i+j; //xato, chunki i,j o‘zgaruvchilar noma’lum
}
cout<<k;
Tanlash operatorini qo‘llashga doir yana bir masalani qarab chiqamiz.
Masala. Quyida, sanab o‘tiluvchi turlar va shu turdagi o‘zgaruvchilar e’lon qilingan:
enum Birlik{detsimetr, kilometr, metr, millimetr, santimetr}
float y; Birlik r;
Birlikda berilgan x o‘zgaruvchisining qiymat metrlarda chop qilinsin.
#include
int main()
{
enum Birlik {detsimetr, kilometr, metr, millimetr, santimetr};
float x,y;
Birlik r;
cout<<’’uzunlikni kiriting: x=’’;
cin>>x;
cout<<’’ uzunlik birliklari\n’’;
cout<<’’ 0-detsimetr\n’’;
cout<<’’1-kilometr\n’’;
cout<<’’2-metr\n’’;
cout<<’’3-millimetr\n’’;
cout<<’’4-santimetr\n’’;
cout<<’’uzunlikni birligini tanlang; r=’’;
cin>>r;
switch(r)
{
case detsimetr:y=x/10; break;
case kilometr: y=x*1000; break;
case metr: y=x; break;
case millimetr: y=x/1000; break;
case santimetr: y=x/100; break;
default:
cout<<’’uzunlik birligi noto’g’ri kiritildi!’’;
return 0;
}
cout<<y<<’’metr’’;
return 0;
}
Do'stlaringiz bilan baham: |