Alamiy matematika




Download 1,81 Mb.
Pdf ko'rish
bet14/33
Sana07.06.2024
Hajmi1,81 Mb.
#261447
1   ...   10   11   12   13   14   15   16   17   ...   33
Bog'liq
e6077933-4123-4774-8cff-1eae13c7f186

If – else operatori:
Shart operatorining if – else ko‘rinishi quyidagicha: 
if ()
2
>; else
2
>; 
Bu yerda  0 qiymatidan farqli yoki true bo‘lsa 1
>, aks holda 
bajariladi. If-else shart operator mazmuniga ko‘ra algoritmning 
tarmoqlanuvchi blokini ifodalaydi:  - shart bloki (romb) va 1
> blokning «ha» shoxiga, 2
> esa blokning «yo‘q» shoxiga mos keluvchi 
amallar bloklari deb qarash mumkin . 
8-rasm. if(), else shart operatorining blok sxemasi 
Misol tariqasida diskriminantni hisoblash usuli yordamida ax
2
+bx+c=0
ko‘rinishidagi kvadrat tenglama ildizlarini topish masalasini ko‘raylik: 
#include  
#include  
int main() 
shart-ifoda 
operator
1
ha (true) 
yo’q (false) 
operator
2



 
float a,b,c; 
float D,x1,x2; 
cout<<’’ax^2+bx+c=0; tenglama ildizini topish .’’; 
cout<<’’\n a- koiffitsiyentni kiriting: ‘’; 
cin>>a; 
cout<<’’\n b- koeffitsientni kiriting: ‘’; 
cin>>b; 
cout<<’’\n c- koeffitsientni kiriting: ‘’; 
cin>>c; 
D=b*b-4*a*c; 
If(D<0) 
{cout<<’’tenglama haqiqiy ildizga ega emas!’’; 
return 0; 

if (D==0) 
{cout<<’’tenglama yagona ildizga ega:’’; 
x1=-b/(2*a); 
cout<<’’\nx=’’<
return o; 

else 
{cout<<’’tenglama yagona ildizga ega:’’; 
x1=(-b+sqrt(D))/(2*a); 
x1=(-b-sqrt(D))/(2*a); 
cout<<’’\nx1=’’<
cout<<’’\nx1=’’<

return 0; 



Programma bajarilganda, birinchi navbatda tenglama koeffitsientlari – a, b, s 
o‘zgaruvchilar qiymatlari kiritiladi, keyin diskriminant – D o‘zgaruvchi qiymati 
hisoblanadi. Keyin D qiymatining manfiy ekanligi tekshiriladi. Agar shart o‘rinli 
bo‘lsa, yaxlit operator sifatida keluvchi ‘{‘ va ‘}’ belgilari orasidagi operatorlar 
bajariladi va ekranga “Tenglama haqiqiy ildizlarga ega emas” xabari chiqadi va 
programma o‘z ishini tugatadi (“return 0;” operatorini bajarish orqali). Diskriminant 
noldan kichik bo‘lmasa, navbatdagi shart operatori uni nolga tengligini tekshiradi. 
Agar shart o‘rinli bo’lsa, keyingi qatorlardagi operatorlar bloki bajariladi – ekranga 
“ Tenglama yagona ildizga ega:” xabari, hamda x1 o‘zgaruvchi qiymati chop 
qilinadi va programma shu yerda o‘z ishini tugatadi, aks holda, ya’ni D qiymatni 
noldan katta holati uchun else kalit so‘zidan keyingi operatorlar bloki bajariladi va 
ekranga “Tenglama ikkita ildizga ega: “ xabari, hamda x1 va x2 o‘zgaruvchilar 
qiymatlari chop etiladi. Shu bilan shart operatoridan chiqiladi va asosiy funksiyaning 
return ko’rsatmasini bajarish orqali programma o‘z ishini tugatadi. 
O‘z navbatida 1
> va 2
> ham shartli operator bo’lishi 
mumkin. Ifodadagi har bir else kalit so‘zi, oldindagi eng yaqin if kalit so‘ziga 
tegishli hisoblanadi (xuddi ochiluvchi va yopiluvchi qavslardek). Buni inobatga 
olmaslik mazmunan xatoliklarga olib kelishi mumkin. 
Masalan:
if (x==1)
if (y==1) cout«”x=1 va y=1’’; 
else cout <<’’x<>1’’; 
Bu misolda «x<>1 » xabari x qiymatini 1 ga teng va u qiymatini 1 ga teng 
bo‘lmagan holda ham chop etiladi. Quyidagi variantda ushbu mazmunan xatolik 
bartaraf etilgan: 
If (x==1) 

If (y==1) cout<<”x=1 va y=1”; 

else cout«”x<>1”; 
Ikkinchi misol tariqasida uchta butun sonning maksimal qiymatini topadigan 
programma bo‘lagini keltirishimiz mumkin: 
… 


int x,y,z,max;
cin »x»y»z;
if (x>y) 
if (y
else max=y; 
else 
 
if (x
else max=x; 
… 
Shart operatorida e’lon qilish operatorlarini ishlatish man etiladi, lekin undagi 
bloklarda o‘zgaruvchilarni e’lon qilish mumkin va bu o‘zgaruvchilar faqat blok 
ichida amal qiladi. Quyidagi misolda bu holat bilan bog‘liq xatolik ko‘rsatilgan: 
If (j>0) {int i; i=2*j;} 
Else i=-j;//xato, chunki I blokdan tashqarida ko‘rinmaydi 
Masala. Berilgan to‘rt xonali ishorasiz sonning boshidagi ikkita raqamining 
yig‘indisi qolgan raqamlar yig‘indisiga teng yoki yo‘qligi aniqlansin (raqamlar 
yig‘indisi deganda ularga mos son qiymatlarining yig‘indisi tushuniladi). Sonning 
raqamlarini ajratib olish uchun butun sonlar arifmetikasi amallaridan foydalaniladi: 
#include  
Int main() 

Unsigned int n,a3,a2,a1,aO;//n=a
3
a
2
a
1
a
0
 ko’rinishida 
cout<<’’\nn-qiymatini kiriting:’’; 
cin>>n; 
If(n<1000| n>9999) 

cout<<’’kiritilgan son 4 xonali emas!’’; 
return1; 

a3=n/1000; 


a2=n%1000/100; 
a1=n%100/10; 
a0=n%10; 
if(a3+a2==a1+a0) cout<<’’a3+a2=a1+a0’’; 
else cout<<’’a3+a2<>a1+a0’’; 
return 0; 

Programma ishorasiz butun son kiritishni taklif qiladi. Agar kiritilgan son 4 
xonali bo‘lmasa (n<1000 yoki n>9999), bu haqda xabar beriladi va programma o‘z 
ishini tugatadi. Aks holda n sonining raqamlari ajratib olinadi, hamda boshidagi 
ikkita raqamning yig’indisi – (a3+a2) qolgan ikkita raqamlar yig‘indisi – (a1+a0) 
bilan solishtiriladi va ularning teng yoki yo‘qligiga qarab mos javob chop qilinadi. 

Download 1,81 Mb.
1   ...   10   11   12   13   14   15   16   17   ...   33




Download 1,81 Mb.
Pdf ko'rish