# include int main() { int natija = 0, // O'yin natijasi durang = 0, // duranglar soni birinchi = 0, // birinchi komanda yutug'i ikkinchi = 0; // ikkinchi komanda yutug'i cout << "Durang - d, birinchi komanda yutug'i - b, ikkinchi komanda yutug'i - i\n" << "Tugatish uchun - EOF." << endl; while ( ( natija = cin.get() ) != EOF ) { switch (natija) { case 'D': // Katta harf uchun case 'd': // kichkina harf uchun durang++; break; // case 'B': case 'b': birinchi++; break; case 'I': case 'i': ikkinchi++; break; case '\n': //yangi satr case '\t': //tabulaytsiya case ' ' : //va bo'shliqlarga etibor bermaslik break; default: // qolgan hamma harflarga javob: cout << "Noto'g'ri ahrf kiritildi. Yangittan kiriting..." break; // eng ohirida chart emas. }//end switch - switch bloki tugaganligi belgisi }//end while cout << "\n\n\nHar bir hol uchun o'yinlar soni:" << "\nDurang: " << durang << "\nBirinchi komanda yutug'i: " << birinchi << "\nIkkinchi komanda yutug'i: " << ikkinchi << endl; return (0); } Bu dasturda uch hil holat uchun qo'llanuvchi harflarni kiritadi. While takrorlash strukturasining shart berilish qismida () qavslarga olingan ( natija = cin.get() ) qiymat berish amali birnchi bo'lib bajariladi. cin.get() funksiyasi klaviaturadan bitta harfni o'qib oladi va uning qiymatini int tipidagi natija o'zgaruvchi-sida saqlaydi. harflar (character) odatda char tipidagi o'zgaruvchilarda saqlanadi. Lekin C++ da harflar istalgan integer (butun son) tip ichida saqlanishi mumkin, chunki kompyuter ichida harflar bir baytlik butun son tiplarida saqlanadi. Qolgan butun son tiplari esa bir baytdan kattadir. Shu sababli biz harflarni butun son (int) sifa-tida yoki harf sifatida ishlatishimiz mumkin.
cout << "L harfi int tipida " << static_cast('L') << " ga teng." << enl;
Ekranda:
L harfi int tipida 76 ga teng.
Demak L harfi komputer ichida 76 qiymatiga egadir. Hozirgi kunda kompyuterlarning asosiy qismi ASCII kodirovkada ishlaydi. (American Standard Code for Information Interchange - informatsiya ayrboshlash uchun amerika standart kodi) ASCII da 256 ta belgining raqami berilgan. Bu kodirovka 8 bit - bir bayt joy oladi. Va ichida asosan lotin alofbosi harflari berilgan. Milliy alifbolarni ifodalash uchun (arab, hitoy, yahudiy, kiril) uangi kodirovka - UNICODE ishlatilmoqda. Bunda bitta simvol yki belgi ikkita bayt orqali beriladi. Ifodalanishi mumkin bo'lgan harflar soni 65536 tadir
(2 ning 16 chi darajasi). UNICODE ning asosiy noqulayligi - uning hajmidir. U asosan Internetga mo'ljallangan edi. Oldin ASCII bilan berilgan tekst hozir UNICODE da berilsa, uning hajmi ikki baravar oshib ketadi, yani aloqa tarmoqlariga ikki marta ko'proq og'irlik tushadi.
Tenglashtirish ifodasining umumiy qitmati chap argumentga berilayatgan qiymatbilan tengdir. Buning qulaylik tarafi shundaki, biz deb yozishimiz mumkin. Bunda oldin g nolga
d = f = g = 0;
tenglashtiriladi keyin g = 0 ifodasining umumiy qiymati - 0 f va d larga zanjir ko'rinishida uzatilinadi.
Demak, natija = cin.get() ifodasining umumiy qiymati EOF (End Of File – file ohiri) constantasi qiymati bilan solishtiriladi, va unga teng bo'lsa while takrorlash strukturasidan chiqiladi. EOF ning qiymati ko'pincha -1 bo'ladi. Lekin ANSI standarti EOF ni manfiy son sifatida belgilagan, yani uning qiymati -1 dan farqli bo'lishi mumkin. Shu sababli -1 ga emas, EOF ga tenglikni test
qilish programmaning universalligini, bir sistemadan boshqasiga osonlik bilan o'tishini taminlaydi. EOF ni kiritish uchun qo'llanuvchi mahsus tugnalar kombinatsiya-
sini bosadi. Bu bilan u "boshqa kiritishga ma'lumot yo'q"
deganday bo'ladi. EOF qiymati da aniqlangan. DOS va DEC VAX VMS sistemalarida EOF ni kiritish uchun tugmalari bir vaqtda bosiladi.
UNIX sistemalarida esa kiritiladi.
Qo'llanuvchi harfni kiritib, ENTER (RETURN) tugmasini bosgandan so'ng, cin.get() funksiyasi harfni o'qiydi. Bu qiymat EOF ga teng bo'lmasa, while tanasi bajariladi. natija ning qiymati case etiketlarining qiymatlari bilan
solishtiriladi. Masalan natija 'D' yoki 'd' ga teng bolda during o'zgaruvchisining qiymati bittaga oshiriladi. Keyin esa break orqali switch tanasidan chiqiladi. switch ning bir hususiyati shundaki, ifodalar bloki {} qavslarga olinishi shart emas.Blokning kirish nuqtasi case etiketi, chiqish nuqtasi esa break operatoridir.
case '\n':
case '\t':
case ' ' :
break;
Yuqoridagi dastur bloki qo'llanuvchi yanglish kiritgan yangi satr,tabulyatsiya va bo'shliq belgilarini filtrlash uchun yozilgan. Eng ohirgi break ning majburiy emasligi-ning sababi shuki,break dan so'ng boshqa operatorlar yo’q
Demak break qo'yilmagan taqdirda ham hech narsa bajaril-maydi.EOF kiritilgandan so'ng while tugaydi, o'zgaruvchi-
lar ekranga bosib chiqariladi.