Bu masala yechimi har qanday butun, haqiqiy va satrli turdagi o‘zgaruvchilarni qiymatini almashtirish uchun umumiy usul ekanligini e’tirof etish kerak.
Dasturi: Var A, B: String;
Begin
Write(‘A ni qiymatini kiriting: ’); ReadLn(A);
Write(‘B ni qiymatini kiriting: ’); ReadLn(B);
A:=A+B;
B:=Copy(A,1,Length(A)–Length(B)); Delete(A,1,Length(B));
Writeln(‘Marhamat: A= ’, A, ‘; B= ‘, B); End.
83*. x berilgan bo‘lsin. A=1–2∙x+3∙x2–4∙x3 ko‘phad qiymatini kamroq amal bajargan holda hisoblab javobini ekranga chiqaring.
Yechim:
Berilgan ko‘phad qiymatini kompyuter bajargandagi amallar sonini hisoblab ko‘raylik: A1=2∙x; A2=1–A1(=1–2∙x); A3=x∙x(=x2); A4=3∙A3(=3∙x2); A5=A2+A4(=1–2∙x+3∙x2); A6=x∙x(=x2); A7=x∙A6(=x3); A8=4∙A7(=4∙x3); A9=A5+A8(=1–2∙x+3∙x2–4∙x3).
Bajariladigan amallarni 1-usulda guruhlaymiz: A1=2∙x; A2=x2; A3=1– A1(=1–2∙x); A4=3∙A2(=3∙x2); A5=A3+A4(=1–2∙x+3∙x2); A6=A1∙A1(=4∙x2); A7=A6∙x(=4∙x3); A8=A5–A7(=1–2∙x+3∙x2+4∙x3). Amallar soni bittaga kamaydi. Bajariladigan amallarni 2-usulda guruhlash uchun uchun ifodani 1–
2∙x+x2+2∙x2∙(1–2∙x) kabi yozib olamiz: A1=2∙x; A2=1–A1(=1–2∙x); A3=x∙x(=x2); A4=A1+A2(=1–2∙x+x2); A5=2∙A3(=2∙x2); A6=A5∙A2(=2∙x2∙(1– 2∙x)); A7=A4+A6(=1–2∙x+x2+2∙x2(1–2∙x)). Amallar soni ikkitaga kamaydi. Bajariladigan amallarni 3-usulda guruhlash uchun uchun ifodani 1+x∙(–
2+x∙(3–4∙x)) (Gorner qoidasi [4]) kabi yozib olamiz: A1=4∙x; A2=3–A1(=3–
4∙x); A3=x∙A2(=x∙(3–4∙x)); A4=A3–2(=–2+x∙(3–4∙x)); A5=x∙A4(=x∙(–2+x∙(3– 4∙x))); A6=1+A5(=1+x∙(–2+x∙(3–4∙x))). Amallar soni uchtaga kamaydi. Agar biror usulda Gorner usulidagi amal sonidan kam amalda hisoblashni amalga oshirish mumkin bo‘lsa, demak, bunday usul samaradorroq bo‘ladi.
Var X, A: Real;
Begin
Write(‘X= ’); ReadLn(X);
A:=4*X; A:=3–A; A:=X*A;
A:=A–2; A:=X*A; A:=1+A;
Write(‘A= ’, A); ReadLn; End.
x berilgan bo‘lsin. A=1+2∙x+3∙x2+4∙x3 ko‘phad qiymatini kamroq amal bajargan holda hisoblab javobini ekranga go‘zal chiqaring (yo‘llanma: avval Gorner qoidasi bo‘yicha amallar sonini aniqlab, keyin boshqa usullardagi amallar soni bilan taqqoslang).
x berilgan bo‘lsin. A=2∙x4–3∙x3+4∙x2–5∙x+6 ko‘phad qiymatini kamroq amal bajargan holda hisoblab javobini ekranga go‘zal chiqaring (yo‘llanma: avval Gorner qoidasi bo‘yicha amallar sonini aniqlab, keyin boshqa usullardagi amallar soni bilan taqqoslang).
86*. Sutkaning A-sekundi o‘tayotgan bo‘lsa, shu vaqtgacha qancha to‘liq S soat va M minut o‘tganligini ekranga go‘zal chiqaring (masalan: A=21073 bo‘lsa, S=5, M=51, chunki 21073=5∙3600+51∙60+13).
Yechim:
Quyidagi bog‘lanishlardan foydalanamiz: 1 minut=60 sekund, 1 soat=60 minut=60∙60 sekund=3600 sekund. Masala shartida “sutkaning” so‘zi ishlatilgan, demak, A butun o‘zgaruvchining qiymati 0 sekunddan katta va (1 sutka=24 soat=24∙3600 sekund=) 86400 sekunddan kichik bo‘ladi. Shuning uchun A o‘zgaruvchini LongInt turda tavsiflaymiz. Butun S va M o‘zgaruvchilar qiymati esa, mos ravishda, 24 va 60 dan kichik bo‘lgani uchun Byte turida tavsiflaymiz. [a] belgilash a sonni butun qismi ekanini e’tiborga olgan holda bajaradigan amallarimizni quyidagi jadvalda aks ettiramiz:
Vaqt taqsimoti
Matematik ifoda
Misolda
Paskalda
Berilgan sekund
A
21073
A
To‘liq soat
S=[A/3600]
[21073/3600]=5
S:=Trunc(A/3600); yoki S:=A div 3600;
Qolgan sekund
Q=A–S∙3600
21073–5∙3600=3073
Q:=A–S*3600; yoki Q:=A mod 3600;
To‘liq minut
M=[Q/60]
[3073/60]=51
M:=Trunc(Q/60); yoki M:=Q div 60;
Qolgan sekund
Q=Q–M∙60
3073–51∙60=13
Q:=Q–M*60; yoki Q:=Q mod 60;
Dasturda qo‘shimcha Q o‘zgaruvchi kiritmay, uni o‘rniga A o‘zgaruvchidan foydalanish mumkin.
Dasturi:
Var
A: LongInt; S, M: Byte; Begin
Write(‘Sutkaning o`tayotgan sekundi qiymatini kiriting: ’); ReadLn(A); S:=A div 3600; A:=A mod 3600; M:=A div 60; A:=A mod 60;
Writeln(‘Sutkaning ’, S, ‘-soati ‘, M , ‘-minuti ’, A , ‘-sekundi o`tmoqda’); End.
87*. Berilgan 5 xonali A natural sonni raqamlarini chiqaring.
Yechim:
Quyidagi misolni ko‘raylik:
Son Matematik Misolda Paskalda
ifoda
A=1 A=[A/10] A=[1/10]= A:=Trunc(A/10);
=[0,1]=0 yoki A:=A div 10;
Umuman, oxirgi qadam bajarilishi shart emas edi. Lekin ko‘p xonali A soni uchun algoritmni qachongacha bagarilishini ko‘rsatish uchun shu qadamni yozdik. 5 xonali eng katta son 99999 bo‘lgani uchun A sonni LongInt turda, raqamlarga mos o‘zgaruvchilarni Byte turda olish maqsadga muvofiq. Dasturi:
Var A: LongInt; R1, R2, R3, R4, R5: Byte;
Begin
Write(‘5 xonali A sonni qiymatini kiriting: ’); ReadLn(A);
R5:=A mod 10; A:=A div 10; R4:=A mod 10; A:=A div 10; R3:=A mod 10;
A:=A div 10; R2:=A mod 10; A:=A div 10; R1:=A mod 10;
Write(‘ 1-raqam=’, R1, ‘ 2-raqam=’, R2, ‘ 3-raqam=’, R3);
Write(‘ 4-raqam=’, R4, ‘ 5-raqam=’, R5); End.
88. Berilgan 5 xonali A natural sonni raqamlari yig‘indisini go‘zal chiqaring (yo‘llanma: sonni raqamlarini ajratib S o‘zgaruvchiga qo‘shib boriladi). 89*. Berilgan 5 xonali A natural sonni birinchi va oxirgi raqamlari o‘rnini almashtirib, hosil bo‘lgan yangi sonni chiqaring.
Yechim:
Agar A=12345 bo‘lsa, hosil qilinishi kerak bo‘lgan son 52341 bo‘ladi. Sonni R1, R2, R3, R4, R5 raqamlarini ajratib olamiz. A soning standart yoyilmasi ko‘rinishi quyidagicha edi:
A:=R1*10000+R2*1000+R3*100+R4*10+R5;
A son raqamlarga ajratilganda o‘z qiymatini yo‘qotadi, shu sababli yangi son uchun A o‘zgaruvchidan foydalanish mumkin. U holda hosil qilinishi kerak bo‘lgan son quyidagi ko‘rinishda bo‘ladi:
A:=R5*10000+R2*1000+R3*100+R2*10+R1;
Dasturi:
Var A : LongInt; R1, R2, R3, R4, R5: Byte;
Begin
Write(‘5 xonali A sonni qiymatini kiriting: ’); ReadLn(A);
R5:=A mod 10; A:=A div 10; R4:=A mod 10;
A:=A div 10; R3:=A mod 10; A:=A div 10;
R2:=A mod 10; A:=A div 10; R1:=A mod 10;
A:=R5*10000+R2*1000+R3*100+R2*10+R1;
Writeln(‘Hosil qilinishi kerak bo‘lgan son ’, A); End.
90*. Berilgan 5 xonali A natural sonni teskarilab, hosil bo‘lgan yangi sonni go‘zal chiqaring (yo‘llanma: sonni raqamlarini ajratib, sonni standart yoyilmasidan foydalaniladi, qiymatga ega bo‘lmagan birinchi nollar o‘z-o‘zidan yo‘qolib ketadi, ya’ni 50320 ni teskarisi 2305 bo‘ladi).
91*. Berilgan natural N (<46341) da S=1+2+3+…+N yig‘indi qiymatini hisoblang.
Yechim:
Bu kabi yig‘indilarni hisoblash dasturi chiziqli tuzilmali bo‘ladimi? degan savol berilishi tabiiy. Matemetika bilan tanish bo‘lganlar arifmetik progressiyani N ta hadi yig‘indisi formulasini qo‘llab quyidagi ayniyatni aniqlay oladi:
N
1+2+3+…+N N 1
2
Demak, bu masala yechimi ham chiziqli dastur bo‘ladi. Oxirgi ifodan Paskalda yozayotganda ikkita ketma-ket kelgan sondan biri aniq juft bo‘lishini e’tiborga olish yetarli, ya’ni S:=Trunc(N*(N+1)/2); yoki S:=(N*(N+1)) mod 2; aniq javobni hosil qiladi. Chegaraviy qiymat N=46341 da N*(N+1)> 2147483647 bo‘ladi.
Dasturi:
Var S: LongInt; N: Word;
Begin
Write(‘N ni qiymatini kiriting: ’); ReadLn(N);
S:=(N*(N+1)) div 2;
Writeln(‘Javob ’, S); End.
92*. Berilgan natural N (<1024) da S=12+22+32+…+N2 yig‘indi qiymatini
hisoblang (yo‘llanma: 12+22+32+…+N2 NN12N1 ). 6
93*. Berilgan natural N (<304) da S=13+23+33+…+N3 yig‘indi qiymatini
2
hisoblang (yo‘llanma: 13+23+33+…+N3 =(1+2+3+…+N)2 NN 1 ).
2
94*. Berilgan natural N (<32) da S=15+25+35+…+N5 yig‘indi qiymatini hisoblang
5+25+35+…+N5 N2 N12 2N2 2N1).
(yo‘llanma: 1
12
95*. Berilgan natural N (<1024) da S=1+3+5+…+(2∙N–1) yig‘indi qiymatini hisoblang (yo‘llanma: 1+3+5+…+(2∙N–1) N2).
96*. Berilgan natural N (<46341) da S=1+3+5+…+(2∙N–1) yig‘indi qiymatini hisoblang.
Yechim:
Quyidagi tengliklarni tahlil etamiz: 1=12
1+3=22 1+3+5=32 1+3+5+7=42
1+3+5+7+9=52 Demak, 1+3+5+…+(2∙N–1) N2 ayniyat o‘rinli bo‘lar ekan [1].
Dasturi:
Var S: LongInt; N: Word;
Begin
Write(‘N ni qiymatini kiriting: ’); ReadLn(N);
S:=Sqr(N);
Writeln(‘Javob ’, S); End.
97*. Berilgan natural N (<813) da S=12+32+52+…+(2∙N–1)2 yig‘indi qiymatini
hisoblang. (yo‘llanma: 12+32+52+…+(2∙N–1)2 N 2 N 12 N 1 ). 3
98*. Berilgan natural N (<182) da S=13+33+53+…+(2∙N–1)3 yig‘indi qiymatini hisoblang. (yo‘llanma: 13+33+53+…+(2∙N–1)3N2∙(2∙N2–1)).
99*. Berilgan natural N (<513) da S=22+62+102+…+(4∙N–2)2 yig‘indi qiymatini
hisoblang. (yo‘llanma: 22+62+102+…+(4∙N–2)2 4 N 2 N 12 N 1). 3
100*. Berilgan natural N (<1290) da S=1∙2+2∙3+3∙4+…+N∙(N+1) yig‘indi qiymatini hisoblang (yo‘
101*. Berilgan natural N (<214) da S=1∙2∙3+2∙3∙4+…+N∙(N+1)∙(N+2) yig‘indi qiymatini hisoblang (yo‘llanma: 1∙2∙3+2∙3∙4+…+N∙(N+1)∙(N+2)
102*. Berilgan natural N (<2147483647) da kasrli ifodalardan tashkil topgan
S= 1 1 1 ... 1 yig‘indi qiymatini hisoblang.
12 23 34 N(N 1)
Yechim:
Kasrlarni sodda kasrlarga yoyish va zarur qisqartirishlar bajarish orqali quyidagi ko‘rinishiga keltiramiz:
1 1 1 1 1 1 1 1 1 1 1 1
... ...
12 23 34 N(N 1) 1 2 2 3 3 4 N N 1
1 1 1 1 1 1 1 1 1 N
1 ... 1
2 3 3 4 4 N N N 1 N 1 N 1
O‘zgaruvchi N ni LongInt, S ni Real turda tanlash mumkin.
Dasturi:
Var S : Real; N : LongInt;
Begin
Write(‘N ni qiymatini kiriting: ’); ReadLn(N);
S:=N/(N+1); Writeln(‘Javob ’, S); End.
103*. Berilgan natural N (<536870912) da kasrli ifodalardan tashkil topgan
S= 1 1 1 ... 1 yig‘indi qiymatini hisoblang
15 59 913 (4 N 3)(4 N 1)
(yo‘llanma: 1 1 1 ... 1 N ).
15 59 913 (4 N 3)(4 N 1) 4 N 1
104*. Berilgan natural N (<2147483644) da kasrli ifodalardan tashkil topgan
S= ... yig‘indi qiymatini hisoblang (yo‘llanma:
1 1 1 1 N
... ayniyatni hosil qiling, oxirigi
45 56 67 (N 3)(N 4) 4(N 4)
ifodani Paskalda S:=(N/4)/(N+4) kabi yozing).
105*. Berilgan natural N (<715827882) da kasrli ifodalardan tashkil topgan
S= 1 1 1 ... 1 yig‘indi qiymatini hisoblang
14 47 710 (3 N 2)(3 N 1)
(yo‘llanma: 1 1 1 ... 1 N ).
14 47 710 (3 N 2)(3 N 1) 3 N 1
106*. Berilgan natural N (<2147483647) da kasrli ifodalardan tashkil topgan
S= 7 7 7 ... 7 yig‘indi qiymatini hisoblang
18 815 1522 (7 N 6)(7 N 1)
(yo‘llanma: 7 7 7 ... 7 7 N ayniyatni hosil
18 815 1522 (7 N 6)(7 N 1) 7 N 1
qiling, oxirigi ifodani Paskalda S:=N/(N+1/7) kabi yozing).
107*. Berilgan natural N (<2147483647) da kasrli ifodalardan tashkil topgan
S= 1 1 1 ... 1 yig‘indi qiymatini hisoblang (yo‘llanma:
48 812 1216 4 N(4 N 4)
1 1 1 1 N ... ).
48 812 1216 4 N(4 N 4) 16(N 1)
12 22 32 N2
108*. Berilgan natural N (<46341) da S= ... 13 35 57 2 N 1(2 N 1)
yig‘indi qiymatini hisoblang (yo‘llanma: kasrlarni sodda kasrlarga yoyib, zarur
qisqartirishlar bajarib 12 22 32 ... N2 N N 1 ayni-
13 35 57 2 N 1(2 N 1) 22 N 1
yatni hosil qiling).
109*. Berilgan natural A (<1073741823) va natural N (<1073741823) da
S= 1 1 ... 1 yig‘indi qiymatini hisoblang
A(A 1) (A 1)(A 2) (A N 1)(A N)
(yo‘llanma: 1 1 ... 1 N ayni-
A (A 1) (A 1)(A 2) (A N 1)(A N) A (A N)
yatni hosil qiling, oxirigi ifodani Paskalda S:=(N/A)/(A+N) kabi yozing).
110*. Berilgan 1 dan katta natural N (<2147483647) da
Paskalda P:=(N+1)/2/N kabi yozing).
111*. Berilgan natural 1 dan katta N (<2147483647) da
S= ... 1 yig‘indi qiymatini hisoblang
(yo‘llanma: Ln2Ln4 Ln4Ln8 Ln8Ln16 Ln2N1Ln2N N Ln22 ).
112*. Berilgan natural N (<2147483647) da N ta ildiz qatnashgan son qiymatini hisoblang (yo‘llanma:
2cos 2N1 ayniyatdan foydalaning, oxirigi
ifodani Paskalda S:=2*Cos(Pi/Exp((N+1)*Ln(2))) kabi yozing).
113*. Berilgan natural N (<2147483647) da trigonometrik funksiya qatnashgan
S=sin sin 2 ...sin N yig‘indi qiymatini hisoblang (yo‘llanma:
3 3 3 sin sin 2 ...sin N 2sin Nsin(N 1)).
3 3 3 6 3
114*. Berilgan natural N (<2147483647) da trigonometrik funksiya qatnashgan S=arctg arctg ...arctg yig‘indi qiymatini hisoblang (yo‘llanma:
1 1 N arctg arctg ...arctg 2 arctg N 1 ).