2-ma’ruza mavzu: С++da sonlarning turlari va ular ustida amallar. Dastur yaratish jarayoni. Reja


Download 6.3 Mb.
bet7/10
Sana15.11.2023
Hajmi6.3 Mb.
#1775337
1   2   3   4   5   6   7   8   9   10
Bog'liq
S-D1-ma\'ruza-2

2.13. Raqamli tur konvertatsiyasi
Key Point. Haqiqiy turli sonlar butun turga ochiq taqsimlash orqali o’tkaziladi.
Xo’sh, butun qiymatni haqiqiy turdagi o’zgaruvchiga ta’minlay olamizmi? Ha. Haqiqiy qiymatni butun turdagi o’zgaruvchiga ta’minlay olamizmi? Ha. Butun turli o’zgaruvchiga haqiqiy turli qiymatni bersak, u bu sonning butun qismini oladi (kasr qismini emas). Masalan:
int i = 34.7; // i 34 ga teng
double f = i; // endi f 34 ni oldi
double g = 34.3; // g 34.3 ga teng
int j = g; // endi j 34 ni oldi
Ikki turga tegishli operandlar ishtirokida operatsiya bajarish mumkinmi? Ha. Agar butun turli va haqiqiy turli qiymatlar bitta ifodada kelsa, C++ butun qiymatni avtomatik tarzda butun turli qiymatni haqiqiy turga o’tkazib oladi. Masalan, 3 * 4.5 ifodasi 3.0 * 4.5 bilan bir xil.
Shuningdek, C++ bir turdagi sonli qiymatni o’tkazish operatori (casting operator) dan foydalangan holda boshqa turdagi sonli qiymatga o’ztkazishga ruxsat beradi. Uning qo’llanilish qoidasi quyidagicha:
static_cast(qiymat)
Bu yerda qiymat o’zgaruvchi, tur biz o’tkazmoqchi bo’lgan sonli tur.
Ushbu ko’rsatma satri
cout << static_cast(1.7);
1 ni ko’rsatadi. double qiymat int qiymatga o’tkazilganda o’nli kasrning faqat butun qismi olinadi.
Ushbu ko’rsatma satri
cout << static_cast(1) / 2;
0.5 ni ko’rsatadi, chunki, 1 dastlab 1.0 ga o’giriladi, keyin 1.0 qiymat 2 ga bo’linadi. Har qanday vaziyatda ham
cout << 1/ 2;
ko’rsatma satri 0 ni ko’rsatadi, chunki bu yerda 1 va 2 ning ikkalasi ham butun qiymatlar. Butun qiymatlarning bo’linmasi ham butun bo’lishi kerak.
Kichik hajmdagi turni kattaroq hajmdagisiga o’tkazish turni kengaytirish deb ataladi. Kattaroq hajmdagi turni kichik hajmdagisiga o’tkazish turni toraytirish deb ataladi. Turni toraytirish (masalan double dan int ga o’tkazish) aniqlikni kamaytirishi mumkin. Axborot qismining zararlanishi esa sifatsiz natija beradi. static_cast dan foydalanib turni toraytirganingizda kompilyator sizni ogohlantiradi.
2.10-ro’yxatda o’nli kasrdagi nuqtadan keyin ikki son qatnashuvchi savdo soliqlarini hisoblash dasturi berilgan.
2.10-ro’yxat. O’nli kasrdagi nuqtadan keyin ikki son qatnashuvchi savdo soliqlarini hisoblash dasturi
1 #include
2 using namespace std;
3
4 intmain()
5 {
6 // Harid miqdorini kiritish
7 double haridMiqdori;
8 cout << "Harid miqdorini kiriting: ";
9 cin >> haridMiqdori;
10
11 double soliq = haridMiqdori * 0.06;
12 cout << "Haridlar solig’i "<< static_cast(soliq * 100) / 100.0;
13
14 return 0;
15 }

Harid miqdorini kiriting: 197.55
Haridlar solig’i 11.85

Dastur kodining 7-9-satrlarida haridMiqdori o’zgaruvchisiga foydalanuvchi tomonidan 197.55 qiymati berilgan. Savdo solig’i harid miqdorining 6 % iga teng va u hisoblash natijasiga ko’ra 11.853 qiymatni olyapti. 12-satrdagi ko’rsatma (static_cast (soliq * 100) / 100.0) ga asosan, soliq qiymati kasr sonining nuqtasidan keying ikkita raqam bilan berilgan holda ko’rsatilmoqda. Bu jarayonning amalga oshirilishi:


soliq * 100 1185.3 ga teng
static_cast(soliq * 100) esa 1185 ga teng
static_cast (soliq * 100) / 100.0 esa qiymat ko’rinishini 11.85 ga keltiradi



Download 6.3 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling