Olimpiada misollarini yechish usullari II- bosqich Muallif: Mengliyev Sh. Qo`shilgan sana: 2015-04-08 Olimpiada misollarini yechish usullari II – bosqich


Download 43.84 Kb.
bet11/12
Sana24.04.2023
Hajmi43.84 Kb.
#1394008
1   ...   4   5   6   7   8   9   10   11   12
Bog'liq
олимпиада учун масалалар

end.
113-misol. Qurbaqa har kuni oldingi kunga qaraganda 20% ko’proq va yana 2 ta chivin yeydi. Agar qurbaqa birinchi kunda 12 ta chivin yegan bo’lsa, u holda necha kundan keyin yeyilgan chivinlar soni 100 tadan oshishini aniqlovchi dastur tuzing.
Program L113; { frog - qurbaqa }
uses Crt; 
Procedure frog(n : real; k : integer); 
begin 
if trunc(n) > 100 then write(k) 
else frog(n + 0.2*n + 2, k + 1) 
end
begin 
write('Qurbaqa '); 
frog(12, 1); writeln('kuni 100 tadan ko’proq chivin yeydi') 
end.
Mustaqil yechish uchun vazifa
114-misol. Vinni Pux har tug’ilgan kunda oldingi 2 ta tug’ilgan kunida yeyilgan ovqatni yeydi. Pyatachok va Quyonning birinchi ikkita tug’ilgan kunida u 100 g ovqat yedi. Vinni Pux 15-chi tug’ilgan kunda necha kilogramm ovqat yeyishini aniqlovchi dasturni tuzing.
115-misol. Bir hujayrali amyoba har 3 soatda 2 ta hujayraga bo’linadi. 3,6,9,12,…,24 soatdan keyin nechta hujayra bo’lishini aniqlovchi dastur tuzing.
Program L115; 
uses Crt;
var 
i : integer; 
{----------------------------------------------------------------------------------------}
Procedure ameba(n, i, k : integer); {Amyobaning bo’linishi} 
begin 

if k = i then write(' ', n, ' ') 
else ameba(2*n, i, k + 3) 
end
{----------------------------------------------------------------------------------------}
begin 
writeln(‘3, 6, 9, ..., 24 soatdan keyin hujayra soni'); 
i := 0; 
repeat 
i := i + 3;
ameba(1, i, 0)
until i = 24; 
writeln; 
end.
Mustaqil yechish uchun vazifa
116-misol. Sportchi mashg’ulotlarni boshlagandan so’ng, birinchi kuni 10 km yugurdi. Har kuni u kunduzgi normani oldingi kun normasiga qaraganda 10% ga oshirar edi. Sportchi 7 kunda jami qancha yo’lni yugurib o’tadi.
Dasturni tuzish uchun rekursiv prosedura qo’llanilishi kerak bo’lgan yanada qiyinroq masalani ko’rib chiqaylik.
117-misol. Katta sonlarni bir-biriga ko’paytirish natijasida xotira to’lib qolishi mumkin. Shuning uchun, berilgan butun tur (integer yoki longint) ning eng katta chegaraviy sonidan oshib ketuvchi ko’paytmani chop etish maqsadida tabiiy vositalardan foydalanish kerak.
Eng katta chegaraviy sondan oshib ketuvchi ikki son ko’paytmasini chop etish uchun dastur tuzamiz.
Yechish
Multiplication prosedurasu sonini soninig birlar xonasidagi raqamidan boshlab, har bir raqamiga ko’paytirib chiqamiz. Xotirada mavjud bo’lgan ko’paytmasiga qo’shishdan olingan ko’paytmaning oxirgi raqami chop etiladi, qolgan raqamlar esa xotiraga kiritiladi - multiplication prosedurasiga rekursiv murojaat etishda o’zgaruvchilar sifatida qabul qilinadi. Oxirida b soning birinchi (chap) raqamiga ko’paytirish jarayoni amalga oshiriladi. Shu bilan ko’paytirish tugaydi. U holda natijaning boshi - oxirgi raqamini hisobga olmagan holda (s div 10) to’plangan ko’paytma, undan keyin esa rekursiyadan qaytishda- ko’paytmaning qolgan barcha raqamlari (s mod 10) rekursiyaga kirish paytida ularning hisoblanishiga nisbatan teskari tartibda chop etiladi.

Download 43.84 Kb.

Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   12




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