Unsigned int pul; //pu1- kiritiladigan pul miqdori


Download 15.3 Kb.
Sana05.01.2022
Hajmi15.3 Kb.
#228997
Bog'liq
Masala


Masala. Har qanday 7 katta butun sondagi pul miqdorini 3 va 5 so‘mliklarda berish mumkinligi isbotlansin. Qo‘yilgan masala p=3n+5m tenglamasi qanotlantiruvchi m,n sonlar juftliklarini topish masalasidir (p-pul miqdori). Bu shartning bajarilishini m va n o‘zgaruvchilarining mumkin bo‘lgan qiymatlarining barcha kombinatsiyalarida tekshirish zarur bo‘ladi.

int main()

{

unsigned int pul; //pu1- kiritiladigan pul miqdori



unsigned n3,m5; //n-3 so'mliklar , m-5 so'mliklar soni

bool xato=false; //pu1 qiymatini kiritilgandagi xatolik

do

{
if (xato) cout<<"kiritilgan pul qiymati 7 dan kichik !";



xato=true ; //keyingi takrorlash xato hisoblanadi

cout<<"\npul qiymatini kiriting (>7):";

cin>>pul;

}

while (pul<=7); // toki 7 sonidan katta sopn kiritulguncha



n3=0 ; //birorta ham 3 so'mlik yo'q

do

{



m5=0; // birorta ham 5 so'mlik yo'q

do

{



if (3*n3+5*m5==pul)

cout<

m5++; //5so'mliklar bittaga oshiriladi

}

while(3*n3+5*m5<=pul);



n3++; //3 so'mliklar bittaga oshiriladi

}

while(3*n3<=pul);



return 0;

}

Programma pul qiymatini kiritishni so‘raydi (pu1 o‘zgaruvchiga).Agar pul qiymati 7 sonidan kichik bo‘lsa, bu haqda xabar beriladi va takror ravishda qiymat kiritish talab qilinadi. Pul qiymati 7 dan katta bo’lganda, 3 va 5 so‘mliklarning mumkin bo‘lgan to‘la kombinatsiyasini amalga oshirish uchun ichma-ich takrorlashlar amalga oshiriladi. Tashqi takrorlash n3 (3 so‘mliklar miqdori) bo‘yicha, ichki takrorlash esa m5 (5 so‘mliklar miqdori) bo‘yicha, toki bu miqdordagi pullar qiymati pul qiymatidan oshib ketmaguncha davom etadi. Ichki takrorlashda m5 o’zgaruvchisining har bir qiymatida «3*n3+5*m5==pu1» sharti tekshiriladi, agar u o‘rinli bo‘lsa, yechim varianti sifatida n3 va m5 o’zgaruvchilar qiymatlari chop etiladi.



Pul qiymati 30 so‘m kiritilganda, ekranga

0 ta 3 so’mlik +6 ta 5 so’mlikchop etiladi.

5 ta 3 so’mlik +6 ta 5 so’mlik

10 ta 3 so’mlik +0 ta 5 so’mlik

echim variantlari chop etiladi.
Do while takrorlash operatori

Do while ifodasi while strukturasiga o'xshashdir. Bitta farqi shundaki while da shart boshiga tekshiriladi. Do while da esa takrorlanish tanasi eng kamida bir marta ijro ko'radi va shart strukturaning so'ngida test qilinadi. Shart true bo'lsa blok yana takrorlanadi. Shart false bo'lsa do while ifodasidan chiqiladi. Agar do whileichida qaytarilishi kerak bo'lgan ifoda bir dona bo'lsa {} qavslarning keragi yo'qdir. Quyidagicha bo'ladi:

do

ifoda;


while (shart);

Lekin {} qavslarning yo'qligi dasturchini adashtirishi mumkin. Chunki qavssiz do while oddiy while ning boshlanishiga o'xshaydi. Buni oldini olish uchun {} qavslarni har doim qo'yishni tavsiya etamiz.

int k = 1;

do {


k = k * 5;

} while ( !(k>1000) );



Bu blokda 1000 dan kichik yoki teng bo'lgan eng katta 5 ga karrali son topilmoqda.while shartini ozroq o'zgartirib berdik, ! (not - inkor) operatorining ishlashini misolda ko'rsatish uchun. Agar oddiy qilib yozadigan

bo'lsak, while shartining ko'rinishi bunday bo'lardi: while (k<=1000); Cheksiz takrorlanishni oldini olish uchun shart ifodasining ko'rinishiga katta e'tibor berish kerak. Bir nuqtaga kelib shart true dan false qiymatiga o'tishi shart
Download 15.3 Kb.

Do'stlaringiz bilan baham:




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