#include
using namespace std;
int main()
{
double hours = 35.45;
double rate = 15.00;
double tolerance = 0.01000;
cout << "hours = " << hours << ", rate = "
<< rate << ", pau = " << hours * rate
<< ", tolerance = " << tolerance << endl << endl;
cout << scientific;
cout << "Scientific notation: " << endl;
cout << "hours = " << hours << ", rate = " << rate
<< ", pau = " << hours * rate
<< ", tolerance = " << tolerance << endl << endl;
cout << fixed;
cout << "Fixed decimal notation: " << endl;
cout << "hours = " << hours << ", rate = " << rate
<< ", pau = " << hours * rate
<< ", tolerance = " << tolerance << endl << endl;
return 0;
}
Dаstur nаtijаsi:
hours = 35.45, rate = 15, pau = 531.75, tolerance = 0.01
Scientific notation:
hours = 3.545000e+001, rate = 1.500000e+001, pau = 5.317500e+002, tolerance = 1.000000e-002
Fixed decimal notation:
hours = 35.450000, rate = 15.000000, pau = 531.750000, tolerance = 0.010000
setprecision mаnipulyatоri hаqiqiy sоnlаrni chоp etishdа ishlаtilаdi. Bu mаnipulyatоr оrqаli sоn kаsr qismining nechtа rаqаmini chоp etish kerаklаgini аniqlаsh imkоni tug’ilаdi.
cout << setprecision(2);
double d=123.456;
cout << fixed << setprecision(2);
cout << d;
Dаstur nаtijаsi: 123.45 sоni ekrаngа chоp etilаdi.
setw mаnipulyatоri o’zgаruvchi yoki ifоdа qiymаti nаtijаlаrini mаxsus kаtаklаrdа (jоy) chiqаrish imkоnini berаdi. setw(n) – ko’rinishidа berilаdigаn ushbu mаnipulyatоrdа n – nechtа kаtаkchаdа chiqаrish kerаkligini аniqlаydi.
#include
using namespace std;
int main()
{
int x = 19;
int a = 345;
double u = 76.384;
cout << fixed << showpoint;
cout << "12345678901234567890" << endl;
cout << setw(5) << x << endl;
cout << setw(5) << a << setw(5) << "Hi"<< setw(5) << x << endl << endl;
cout << setprecision(2);
cout << setw(6) << a << setw(6) << u << setw(6) << x << endl;
cout << setw(6) << x << setw(6) << a<< setw(6) << u << endl << endl;
cout << setw(5) << a << x << endl;
cout << setw(2) << a << setw(4) << x << endl;
return 0;
}
Dаstur nаtijаsi:
12345678901234567890
19
345 Hi 19
345 76.38 19
19 345 76.38
34519
345 19
setfull mаnipulyatоri yordamida bo’sh joylarni ko’rstlgan belgi bilan toldirish mumkin. Masaln:
int a=12;
cout << setw(5) << setfull(‘0’)<
Dаstur nаtijаsi:
00012
hex, dec, oct, bin mаnipulyatоri yordamida sonni mos ravishda 16 s/s, 10s/s, 8 s/s va 2 s/s dagi qiymatini chigarish mumkin. Masalan:
int a=16;
cout << hex << a;
Dаstur nаtijаsi:
10
5. Format modifikatorlari: printf(), scanf() funksiyalari
Formatli chiqarish – printf. Chiqarish printf funksiyasi ko’rsatilgan parametrlarni standart oqimga chiqarish uchun ishlatiladi. Standart oqim tushunchasi keyingi boblarda yoritiladi. Xozircha standart oqim sifatida monitor tushunilishi yetarlidir.
Funksiya stdio.h modulida joylashgan bo’lib, umumiy ko’rinishi quyidagichadir:
printf(control,arg1,arg2,…)
Bunda control boshqaruvchi qator deb atalib ikki turdagi simvollardan iborat bo’ladi: oddiy chiqariluvchi simvollar va navbatdagi parametrni o’zgartirib chiqaruvchi spesifikasiyalar.
Har bir spesifikasiya % simvolidan boshlanib o’zgartirish turini ko’rsatuvchi simvol bilan tugaydi.
O’zgartirish simvollari quyidagilardan iborat.
Butun sonlar uchun:
d– parametr ishorali o’nlik butun songa aylantiriladi
u - parametr ishorasiz o’nlik butun songa aylantiriladi
o – parametr ishorasiz va birinchi raqami 0 bo’lmagan sakkizlik songa aylantiriladi.
x – parametr ishorasiz va 0x belgisiz o’n oltilik songa aylantiriladi
X – parametr xuddi x kabi Faqat harf bilan ko’rsatiluvchi raqamlar katta harf ya’ni A,B,C,D,E,F sifatida yoziladi.
Haqiqiy sonlar uchun:
e – parametr float yoki double turidagi son deb qaraladi va ishorali m.nnnnnne+-xx ko’rinishidagi o’nlik songa keltiriladi
E – parametr xuddi e kabi. Faqat mantissa belgisi katta harf ya’ni E sifatida
yoziladi.
f - parametr float yoki double turidagi son deb qaraladi va ishorali m.nnnnnn ko’rinishidagi o’nlik songa keltiriladi.
g – parametr berilgan son qiymati va aniqligi uchun eng ixcham %e yoki %f
tanlaydi.
G – parametr xuddi g kabi. Faqat mantissa belgisi katta harf ya’ni E sifatida
yoziladi.
Simvol va satr uchun:
c – parametr bitta simvol deb qaraladi.
s – parametr satr simvollar no’linchi simvol uchramaguncha yoki ko’rsatilgan sondagi simvollar bosiladi.
Misol:
#include
int main()
{
int num = -27;
int number = 27;
float f = 123.456;
char r = 'a';
char str[4] = "abc";
printf("%d\n", num); /* -27 */
printf("%u\n", number); /* 27 */
printf("%o\n", number); /* 33 */
printf("%x\n", number); /* lb */
printf( "%f\n", f); /* 123.456001*/
printf("%e\n", f); /* 1.23456e+02 */
printf("%E\n", f); /* 1.23456E+02 */
printf("%c\n", r); /* a */
printf("%s\n", str); /* abc */
return 0;
}
Prosent % belgisi va o’zgartirish simvoli orasiga quyidagi simvollarni
qo’yish mumkin:
сhiqarilayotgan argument chapga tekislash lozimligini ko’rsatuvchi minus belgisi;
мaydon minimal uzunligini ko’rsatuvchi raqamlar qatori;
мaydon uzunligini keyingi raqamlar qatoridan ajratuvchi nuqta;
Biror qatordan qancha simvol ajratib olish lozimligini hamda float yoki double turidagi sonlarda nuqtadan keyin qancha kasr raqamlari bosib chiqarilishini ko’rsatuvchi raqamlar ketma-ketligi;
Chiqarilayotgan son long turiga tegishli ekanligini ko’rsatuvchi uzun o’nlik markeri l.
% dan keyingi simvol o’zgartirish simvoli bo’lmasa u bosmaga chiqariladi. % simvolini o’zini bosmaga chiqarish uchun %% belgisini berish lozim.
Turlar maksimal va minimal qiymatlari.
Turli turlar maksimal va minimal qiymatlari faylidagi konstantalarda saqlanadi.
Quyidagi dasturda char turidagi bitlar soni va char turi maksimal va minimal qiymati ekranga chiqariladi.
#include
#include
int main()
{
printf("CHAR_BIT = %d\n",CHAR_BIT);
printf("CHAR_MIN=%d CHAR_MAX=%d\n", CHAR_MIN, CHAR_MAX);
return 0;
}
Quyidagi dasturda short, int, long turlari maksimal va minimal qiymati ekranga chiqariladi
#include
#include
int main()
{
printf("SHRT_MIN=%d SHRT_MAX= %d\n", SHRT_MIN, SHRT_MAX);
printf("INT_MIN=%d INT_MAX= %d\n", INT_MIN, INT_MAX);
printf("LONG_MIN=%ld LONG_MAX= %ld\n", LONG_MIN, LONG_MAX);
return 0;
}
Quyidagi dasturda unsigned char, unsigned short, unsigned int, unsigned long turlari maksimal va minimal qiymati ekranga chiqariladi.
#include
#include
int main()
{
printf("UCHAR_MAX = %u\n", UCHAR_MAX); printf("USHRT_MAX = %u\n", USHRT_MAX); printf("UINT_MAX = %u\n", INT_MAX); printf("ULONG_MAX = %ul\n", ULONG_MAX);
return 0;
}
Formatli kiritish sanf. scanf funksiyasi stdio.h modulida joylashgan bo’lib, umumiy ko’rinishi quyidagichadir:
scanf(control, arg1, arg2,…)
Funksiya standart oqimdan simvollarni o’qib boshqaruvchi qator asosida formatlab mos parametrlarga yozib qo’yadi. Parametr ko’rsatkich bo’lishi lozim. Boshqaruvchi qator quyidagi o’zgartirish spesifikasiyalaridan iborat:
bo’shliq, tabulyasiya, keyingi qatorga o’tish simvollari;
Oddiy simvollar (% dan tashqari) kiritish oqimidagi navbatdagi simvollar bilan mos kelishi lozim;
% simvolidan boshlanuvchi spesifikasiya simvollari;
% simvolidan boshlanuvchi qiymat berishni ta’qiqlovchi * simvoli;
% simvolidan boshlanuvchi maydon maksimal uzunligini ko’rsatuvchi son;
quyidagi spesifikasiya simvollarini ishlatish mumkin:
d – ishorali o’nli butun son kutilmoqda;
o – ishorali sakkizlik butun son kutilmoqda.
x –ishorali o’n oltilik butun son kutilmoqda;
h - ishorasiz o’nlik son kutilmoqda;
c – bitta simvol kutilmoqda.
s – satr kutilmoqda.
f - float turidagi son kutilmoqda.
Kiritilayotgan sonning butun raqamlari va nuqtadan so’ng kasr raqamlari soni va E yoki e belgisidan so’ng mantissa raqamlari soni ko’rsatilishi mumkin.
#include
int main(void)
{
unsigned width, precision;
int number = 256;
double weight = 242.5;
printf("What field width?\n");
scanf("%d", &width);
printf("The number is :%*d:\n", width, number); printf("Now enter a width and a precision:\n");
scanf("%d %d", &width, &precision);
printf("Weight = %*.*f\n", width, precision, weight); printf("Done!\n");
return 0;
}
6. Preprotsessor direktivalari
Preprotsessor direktivalari kompilyatsiya jarayonidan oldin preprotsessor tomonidan bajariladi. Natijada dastur matni preprotsessor direktivalari asosida o‘zgartiriladi.
#include
Bu direktiva standart kutubxonalardagi funksiyalarni dasturga joylash uchun foydalaniladi.
#define
Bu direktiva bajarilganda dastur matnidagi almashtiruvchi ifodalar almashinuvchi ifodalarga almashtiriladi.
Misol:
#include
#define begin
{
#define end
}
#define pr printf("\n Dasturlash \n");
int main()
{
begin
pr;
end;
}
Almashtiruvchi define direktivasidan nomlangan konstantalar kiritish uchun foydalanish mumkindir.
Misol uchun:
#define ZERO 0
Agar dasturda quyidagi matn mavjud bo‘lsa:
int d = ZERO;
Preprotsessor bu matnda har bir ZERO konstantani uning qiymati bilan almashtiradi, va natijada quyidagi matn hosil bo‘ladi.
int d = 0;
Preprosessorlarni boshqarish
oldindan tayyorlangan simvollar ketma-ketligi bilan identifikatorlarni almashtirish ;
ko‘rsatilgan fayldagi matnni dasturga ulash (bogʻlash) ;
dasturdan ba’zi qismlarni olib tashlash (shartli kompilyasiya) .
Preprosessor direktivalaridan tashqari preprosessor amallari ham mavjud, ular buyruqlar bilan birgalikda batafsil o‘rganiladi.
#defined - operandning rostligini tekshirish;
## - preprosessor leksemalarini birlashtiradi;
# - operandni satr simvoliga akslantiradi (aylantiradi).
#undef - #define direktivasi aniqlagan amallarni bekor qiladi.
#define - makrosning aniqlanishi yoki preprosessorning identifikatori ;
#include - fayldan matnni o‘qish ;
#undef - identifikatorni va makrosni aniqlanishini bekor qilish;
#if - shart ifodani tekshirish;
#ifdef - identifikator aniqlanishini tekshirish;
#ifndef - identifikator noaniqligini aniqlash;
#else - #if uchun alternativ tarmoqning boshlanishi;
#endif - shart direktivasi #if ning oxiri;
#elif - tarkibiy direktiva #else/#if;
#line - keyingi satr nomerini almashtirish;
#error - translatsiya xatosi haqida xabarni formatlashtirish;
#pragma - oldindan aniqlangan amallar;
# - bo‘sh direktivalar.
7. Nazorat savollari
sizeof amali (operatori) vasifasi nimadan iborat?
Kompilyator bu nima?
C++ da ma`lumotlarni klaviaturadan kiritishda qaysi ogim va qaysi operatordan foydaliniladi?
C++ da ma`lumotlarni qora ekranga chiqarish uchun qaysi ogim va qaysi operatordan foydaliniladi?
iomanip kutubhonasi (sarlavha fayli) qachon kerak bo’ladi?
cin oqimi (operatori) nima uchun ishlatiladi?
cout oqimi (operatori) nima uchun ishlatiladi?
cin.get() funktsiyasi qachon ishlatiladi?
cin.ignore() funktsiyasi qachon ishlatiladi?
setprecision manipulyatorining vasifasi nimadan iborat?
fixed manipulyatorining vasifasi nimadan iborat?
setw manipulyatorining vasifasi nimadan iborat?
Format modifikatorlari deganda nimani tushunasiz?
printf funktsiyasining formatlar ro’yhati to’g’risida ma’lumot bering.
scanf funktsiyasining formatlar ro’yhati to’g’risida ma’lumot bering.
Butun sonlar ko’rinishdagi qiymatlarni ekranga chiqarish uchun qanday spesifikatorlardan foydalansa bo’ladi?
Haqiqiy sonlar ko’rinishdagi qiymatlarni ekranga chiqarish uchun qanday spesifikatorlardan foydalansa bo’ladi?
Belgilar ko’rinishdagi qiymatlarni ekranga chiqarish uchun qanday spesifikatorlardan foydalansa bo’ladi?
Butun sonlar ko’rinishdagi qiymatlarni kiritish uchun qanday spesifikatorlardan foydalansa bo’ladi?
Preprotsessor direktivalari – bu…?
Do'stlaringiz bilan baham: |