CodeStep
Mavzularga qaytish

1.3.3 · MAVZU

Tanlash jarayonlariga oid masalalar

23 ta masala. Masala shartini ko‘rib, yechishni boshlang.

Namuna masalalar 2 ta yechim

Masalalar 23 ta

1.3.85-masala

Uzoq Sharqning ayrim mamlakatlarida (Xitoy, Yaponiya va boshqalar) biz ishlatadigan kalendardan farq qiladigan taqvim ishlatilgan (va hozirda norasmiy ravishda qo‘llanilmoqda). Bu kalendar 60 yillik siklik tizimdir. Har bir 60 yillik sikl beshta 12 yillik ichki sikldan iborat. Yilning har bir kichik siklida hayvonlarning nomlari mavjud: kalamush, sigir, yo‘lbars, quyon, ajdaho, ilon, ot, qo‘y, maymun, xo‘roz, it va cho‘chqa. Bundan tashqari, yil nomi tabiatning besh elementi — Yog‘och (yashil), olov (qizil), Yer (sariq), Metall (oq) va Suv (qora) bilan bog‘liq rangni o‘z ichiga oladi. Har bir rang ikki yil davom etadi va 60 yildan keyin yil nomi takrorlanadi. 1984-yil Yashil kalamush yili deb nomlanadi. n yilni hisobga olib, uning nomini “Kalamush, Yashil” ko‘rinishida chiqaradigan dastur tuzing. Ikki holatni ko‘rib chiqing:

a)n = 1984;
b)n istalgan natural son bo‘lishi mumkin.
Kod yozish

Namuna masalalar

Ushbu namunalarda tanlash operatorlari yordamida kiritilgan qiymatga mos natijani topish o‘rganiladi. Python’da match-case, C++ da switch-case operatorlaridan foydalanamiz.

1-NAMUNAVIY MASALA

Hafta kunini aniqlash

1 dan 7 gacha butun son berilgan. Shu raqamga mos hafta kuni nomini chiqaruvchi dastur tuzing.

Bosqichma-bosqich yechim

  1. Foydalanuvchidan hafta kunining raqamini olamiz. Dushanba 1, yakshanba 7 bilan belgilanadi.

    1 — dushanba, 2 — seshanba, 3 — chorshanba, 4 — payshanba, 5 — juma, 6 — shanba, 7 — yakshanba
  2. Tanlash operatori orqali raqamga mos nomni belgilaymiz. 1–7 oralig‘idan tashqaridagi qiymat uchun xato xabarini chiqaramiz.

  3. Tanlangan hafta kuni nomini ekranga chiqaramiz.

Python yechimi

match-case har bir raqamga mos hafta kunini tanlaydi.

kun = int(input("Hafta kunining raqamini kiriting (1-7): "))

match kun:
    case 1: nom = "Dushanba"
    case 2: nom = "Seshanba"
    case 3: nom = "Chorshanba"
    case 4: nom = "Payshanba"
    case 5: nom = "Juma"
    case 6: nom = "Shanba"
    case 7: nom = "Yakshanba"
    case _: nom = "Noto‘g‘ri raqam"

print(nom)
Namuna kirishi
3
Konsoldagi namuna
Hafta kunining raqamini kiriting (1-7): Chorshanba

C++ yechimi

switch-case operatoridagi har bir case bitta hafta kuniga mos keladi.

#include <iostream>
using namespace std;

int main() {
    int kun;
    cout << "Hafta kunining raqamini kiriting (1-7): ";
    cin >> kun;

    switch (kun) {
        case 1: cout << "Dushanba"; break;
        case 2: cout << "Seshanba"; break;
        case 3: cout << "Chorshanba"; break;
        case 4: cout << "Payshanba"; break;
        case 5: cout << "Juma"; break;
        case 6: cout << "Shanba"; break;
        case 7: cout << "Yakshanba"; break;
        default: cout << "Noto'g'ri raqam";
    }
    return 0;
}
Namuna kirishi
3
Konsoldagi namuna
Hafta kunining raqamini kiriting (1-7): Chorshanba

Yakuniy javob

3 raqami haftaning Chorshanba kuniga mos keladi.

2-NAMUNAVIY MASALA

Tanlangan arifmetik amalni bajarish

N butun soni 1–4 oralig‘ida, A va B haqiqiy sonlari berilgan (B ≠ 0). N=1 bo‘lsa qo‘shish, N=2 bo‘lsa ayirish, N=3 bo‘lsa ko‘paytirish, N=4 bo‘lsa bo‘lish amalini bajarib, natijani chiqaring.

Bosqichma-bosqich yechim

  1. Amal raqami N va A, B operandlarini kiritamiz. Bo‘lish amalida B nolga teng bo‘lmasligini tekshiramiz.

  2. N ning qiymatiga qarab mos amalni bajaramiz.

    N=1: A+B
    N=2: A-B
    N=3: A*B
    N=4: A/B
  3. N 1–4 oralig‘ida bo‘lmasa, xato xabarini chiqaramiz.

Python yechimi

match-case amal raqamiga mos hisoblashni tanlaydi.

n = int(input("Amal raqamini kiriting (1-4): "))
a = float(input("A ni kiriting: "))
b = float(input("B ni kiriting: "))

match n:
    case 1: natija = a + b
    case 2: natija = a - b
    case 3: natija = a * b
    case 4 if b != 0: natija = a / b
    case 4:
        print("Nolga bo‘lish mumkin emas")
        exit()
    case _:
        print("Noto‘g‘ri amal raqami")
        exit()

print("Natija:", natija)
Namuna kirishi
1
12
5
Konsoldagi namuna
Amal raqamini kiriting (1-4): A ni kiriting: B ni kiriting: Natija: 17.0

C++ yechimi

switch-case mos amalni bajaradi; bo‘lishdan oldin maxraj tekshiriladi.

#include <iostream>
using namespace std;

int main() {
    int n;
    double a, b;
    cout << "Amal raqamini kiriting (1-4): ";
    cin >> n;
    cout << "A va B ni kiriting: ";
    cin >> a >> b;

    switch (n) {
        case 1: cout << "Natija: " << a + b; break;
        case 2: cout << "Natija: " << a - b; break;
        case 3: cout << "Natija: " << a * b; break;
        case 4:
            if (b == 0) cout << "Nolga bo'lish mumkin emas";
            else cout << "Natija: " << a / b;
            break;
        default: cout << "Noto'g'ri amal raqami";
    }
    return 0;
}
Namuna kirishi
1
12 5
Konsoldagi namuna
Amal raqamini kiriting (1-4): A va B ni kiriting: Natija: 17

Yakuniy javob

N=1, A=12 va B=5 bo‘lganda natija 12+5=17 bo‘ladi.