5.5. Amaliy qism: Lotoreya o`yini Key Point. Lotereya dasturi tasodifiy sonlarni hosil qilish, raqamlarni taqqoslash va mantiqiy operatorlardan foydalanishni talab qiladi. Faraz qilaylik, lotereya o`ynash uchun dastur tuzmoqchimiz. Dastur ikki xonali, tasodifiy sonni generatsiya qiladi, foydalanuvchini ikki xonali sonni kiritishga undaydi va quyida keltirilgan qoida asosida uning g`olib yoki g`olib emasligini aniqlaydi:
1. Agar foydalanuvchi kiritgan raqamlar ketma-ketligi aynan yutuqli son bo`lsa, tartib-qoidasiga ko`ra 10.000$ yutuq pulini oladi.
2. Agar foydalanuvchi kiritgan barcha raqamlar yutuqli son tarkibida mavjud bo`lsa, 3.000$ yutuq pulini oladi.
3. Agar foydalanuvchi kiritgan raqamlardan faqat bittasi yutuqli son tarkibida mavjud bo`lsa, 1.000$ yutuq pulini oladi.
Eslatib o`tamiz, kiritilgan sonning tarkibida 0 raqami ham bo`lishi mumkin. Agar kiritilgan son 10 dan kichik bo`lsa, uning oldidan 0 ni qo`shib qo`yish ko`zda tutiladi. Masalan, agar 8 kiritilgan bo`lsa u 08 deb qabul qilinadi va 0 kiritilsa u dasturda 00 kabi qabul qilinadi. 5.4-kodli ro`yxatda ushbu dasturning to`liq kodi berilgan.
5.4-kodli ro`yxat. Lotereya.cpp 1 #include 2 #include <ctime> // time (0) funksiyasi uchun
3 #include <cstdlib> // rand va srand funksiyasi uchun
4 using namespace std;
5
6 int main()
7 {
8 // Yutuqli son generatsiyasi
9 srand(time(0)); 10 int lotoreya = rand() % 100;
11
12 // Foydalanuvchini o`ylagan sonni kiritishga undash
13 cout << "O`zingiz o`ylagan ikki xonali sonni kiriting: ";
14 int son;
15 cin >> son;
16
17 // Get digits from lotoreya
18 int yutuqliSon1 = lotoreya / 10;
19 int yutuqliSon2 = lotoreya % 10;
20
21 // son dan raqamlarni olish
22 int sonRaqam1 = son / 10;
23 int sonRaqam2 = son % 10;
24
25 cout << "Lotoreya soni "<< lotoreya << endl;
26
27 // son ni tekshirish
28 if (son == lotoreya)
29 cout << "Bexato urinish: 10.000$ yutdingiz!"<< endl;
30 else if(sonRaqam2 == yutuqliSon1
31 && sonRaqam1 == yutuqliSon2)
32 cout << "Barcha raqamlar topildi: 3.000$ yutdingiz!"<< endl;
33 else if (sonRaqam1 == yutuqliSon1
34 || sonRaqam1 == yutuqliSon2
35 || sonRaqam2 == yutuqliSon1
36 || sonRaqam2 == yutuqliSon2)
37 cout << "Bitta raqam topildi: 1.000$ yutdingiz!"<< endl;
38 else 39 cout << "Uzr, yutuq yo`q"<< endl;
40
41 return 0;
42 }
O`zingiz o`ylagan ikki xonali sonni kiriting: 00
Lotoreya soni 0
Bexato urinish: 10.000$ yutdingiz!
O`zingiz o`ylagan ikki xonali sonni kiriting: 45
Lotoreya soni 54
Barcha raqamlar topildi: 3.000$ yutdingiz!
O`zingiz o`ylagan ikki xonali sonni kiriting: 23
Lotoreya soni 34
Bitta raqam topildi: 1.000$ yutdingiz!
O`zingiz o`ylagan ikki xonali sonni kiriting: 23
Lotoreya soni 14
Uzr, yutuq yo`q
Dastur rand() funksiyasi yordamida yutuqli sonni generatsiya qiladi (10-satr) va foydalanuvchini o`ylagan sonini kiritishga undaydi (15-satr). O`ylangan sonni 10 bo`lib qoldiqni olish (son % 10) orqali sonning oxirgi raqami, uni 10 ga bo`lib (son/10), butun qismini olish orqali sondagi raqamlar aniqlanadi.