8.2.1. Amaliy qism: SehrliRaqam.cpp Muammoning qo`yilishi – dastur tomonidan tasodifiy aniqlangan sonni topish. Biz tuzmoqchi bo`lgan dastur 0 dan 100 gacha bo`lgan oraliqdan (0 va 100 ham kiradi) tasodifiy butun sonni aniqlaydi. Dastur foydalanuvchini aniqlangan sonni topishga, foydalanuvchi uni topguncha takroran undayveradi.Foydalanuvchi mos sonni topishi uchun, dastur foydalanuvchi kiritgan sonning tasodifiy aniqlangan sondan katta yoki kichik ekanligi to`g`risida ma’lumot berib boradi va foydalanuvchi yana o`ylab ko`rib, to`g`ri javobni kiritishga harakat qiladi. Quyida ushbu dasturning ishga tushirilgan holatidan namuna keltirilgan:
0 va 100 oralig`idagi sehrli sonni toping
O`ylagan soningizni kiriting: 50
O`ylagan soningiz undan katta
O`ylagan soningizni kiriting: 25
O`ylagan soningiz undan kichik
O`ylagan soningizni kiriting: 42
O`ylagan soningiz undan katta
O`ylagan soningizni kiriting: 39
Ha! Sehrli son: 39
Sehrli raqam 0va100 oralig`ida joylashgan. O`ylashlar sonini qisqartirish maqsadida, dastlab 50 kiritiladi. Agar o`ylangan son dastur aniqlagan sondan katta bo`lsa, demak, sehrli sonni 0 dan 49 gacha oraliqdan izlash kerak. Agar o`ylangan son dastur aniqlagan sondan kichikbo`lsa, demak, sehrli sonni 51 dan100 gacha oraliqdan izlash kerak bo`ladi.Bir o`ylashdan so`ng, oraliqni yana ikkiga bo`lib olish mumkin.
Xo`sh, siz bu dasturni qanday yozgan bo`lardingiz? Dasturni tuzishni hoziroq boshlamoqchimisiz? Yo`q, shoshmang! Dastur tuzishdan avval o`ylab olish muhim ahamiyatga ega.O`ylab ko`ring, dastur yozmasdan turib, bu muammoni qanday hal qilgan bo`lardingiz? Buning uchun dastlab, 0 va 100 oralig`ida, 0 va 100 ni ham inobatga olgan holda, tasodifiy sonni topish zarur. Keyin dastur foydalanuvchini o`ylangan sonni kiritishga undaydi va foydalanuvchi tomonidan kiritilgan bilan tasodifiy son taqqoslanadi.
Bir qadamli, bir marta hisoblaydigan dastur tuzish yaxshi tajriba beradi. Agar siz sikl tuzishga qiynalayotgan bo`lsangiz, unda siklning bir martalik qadamida hisoblanuvchi kodni yozib, ishlatib ko`ring. Shunda uning siklda qanday ishlashini bilib olasiz va siklni osongina tuza olasiz. Bu dasturni quyidagicha tuzib ko`rishingiz mumkin:
8.2-kodli ro`yxat. BirMartalikRaqam.cpp 1 #include 2 #include 3 #include // time funksiyasini chaqirish uchun 4 using namespace std;
5
6 int main()
7 {
8 // Tasodifiy son generatsiyasi 9 srand(time(0));
10 int son = rand() % 101;
11
12 cout << "0 va 100 orasidagi sehrli sonni toping";
13
14 // Foydalanuvchini son o`ylashga undash 15 cout << "\nO`ylagan soningizni kiriting ";
16 int uylSon;
17 cin >>uylSon;
18
19 if (uylSon == son)
20 cout <<"Ha! Sehrli son: " <21 else if (uylSon>son)
22 cout << "O`ylagan soningiz undan katta" << endl;
23 else
24 cout << "O`ylagan soningiz undan kichik" << endl;
25
26 return 0;
27 }
Bu dastur ishga tushirilganda, u foydalanuvchini o`ylagan sonini kiritishga undaydi.Keling, foydalanuvchi sonni takroran kirita oladigan dastur tuzamiz. Buning uchun 15-24 - satrlarni sikl tarkibiga quyidagi ko`rinishda kiritish kerak:
while (true)
{ // Foydalanuvchini son o`ylashga undash cout<< "\nO`ylagan soningizni kiriting: ";
cin>>uylSon;
if (uylSon == son)
cout<< "Ha! Sehrli son:" <else if (uylSon>son)
cout<< "O`ylagan soningiz undan katta" << endl;
else
cout<< "O`ylagan soningiz undan kichik" << endl;
} // Siklning tugashi Bu dastur foydalanuvchini o`ylangan sonni takroran kiritishga undaydi.Shunday bo`lsa ham, bu sikl noto`g`ri, chunki u hech qachon to`xtamaydi.O`ylangan son tasodifiy songa mos tushganda sikl to`xtashi lozim.Shunday qilib, bu siklni quyidagicha qayta ko`rib chiqish mumkin:
while (uylSon != son)
{ // Foydalanuvchini o`ylangan sonni kiritishga undash cout<< "\nO`ylagan soningizni kiriting: ";
cin>>uylSon;
if (uylSon == son)
cout<< "Ha! Sehrli son: " <else if (uylSon>son)
cout<< "O`ylagan soningiz undan katta" << endl;
else
cout<< "O`ylagan soningiz undan kichik" << endl;
} // Siklning tugashi 8.3-kodli ro`yxat. Sikl.cpp 1 #include 2 #include 3 #include // time funksiyasini chaqirish uchun 4 using namespace std;
5
6 int main()
7 {
8 // Tasodifiy son generatsiyasi 9 srand(time(0));
10 int son = rand() % 101;
11
12 cout << "0 va 100 orasidagi sehrli sonni toping";
13
14 int uylSon = -1;
15 while (uylSon != son)
16 {
17 // Foydalanuvchini son o`ylashga undash 18 cout << "\nO`ylagan soningizni kiriting: ";
19 cin >> uylSon;
20
21 if (uylSon == son)
22 cout << "Ha! Sehrli son: " << son << endl;
23 else if (uylSon > son)
24 cout << "O`ylagan soningiz undan katta" << endl;
25 else
26 cout << "O`ylagan soningiz undan kichik" << endl;
27 } // End of loop
28
29 return 0;
30 }