Dasturlash I 3-hafta mavzu: С++da sonlarning turlari va ular ustida amallar. Dastur yaratish jarayoni


Download 6.28 Mb.
bet6/9
Sana27.10.2023
Hajmi6.28 Mb.
#1727351
1   2   3   4   5   6   7   8   9
Bog'liq
ma\'ruza-3

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 taqsimlash 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.28 Mb.

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




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