Unsigned int pul; //pu1- kiritiladigan pul miqdori
Download 15.3 Kb.
|
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 {
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); } 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 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'muriyatiga murojaat qiling