B. J. Boltayev, A. R. Azamatov, G. A. Azamatova, B. S. Xurramov nazariya, algoritm, dastur toshkent 2013


Bu masala yechimi har qanday butun, haqiqiy va satrli turdagi


Download 372.89 Kb.
bet62/68
Sana02.11.2023
Hajmi372.89 Kb.
#1740971
1   ...   58   59   60   61   62   63   64   65   ...   68
Bog'liq
Algoritmlash va dasturlash asoslari seriyasidan Kitob – II b. J.-fayllar.org

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∙x


2
–4∙x
3
ko‘phad qiymatini kamroq amal ba-
jargan 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(=x
2
); A4=3∙A3(=3∙x
2
);
A5=A2+A4(=1–2∙x+3∙x
2
); A6=x∙x(=x
2
); A7=x∙A6(=x
3
); A8=4∙A7(=4∙x
3
);
A9=A5+A8(=1–2∙x+3∙x
2
–4∙x
3
).
Bajariladigan amallarni 1-usulda guruhlaymiz: A1=2∙x; A2=x
2
; A3=1–
A1(=1–2∙x); A4=3∙A2(=3∙x
2
); A5=A3+A4(=1–2∙x+3∙x
2
); A6=A1∙A1(=4∙x
2
);
A7=A6∙x(=4∙x
3
); A8=A5–A7(=1–2∙x+3∙x
2
+4∙x
3
). Amallar soni bittaga kamaydi.
Bajariladigan amallarni 2-usulda guruhlash uchun uchun ifodani 1–
2∙x+x
2
+2∙x
2
∙(1–2∙x) kabi yozib olamiz: A1=2∙x; A2=1–A1(=1–2∙x);
A3=x∙x(=x
2
); A4=A1+A2(=1–2∙x+x
2
); A5=2∙A3(=2∙x
2
); A6=A5∙A2(=2∙x
2
∙(1–
2∙x)); A7=A4+A6(=1–2∙x+x
2
+2∙x
2

(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.
Dasturi (Gorner qoidasi):
Dasturi (Gorner qoidasi):



94
Var X, A1, A2, A3, A4, A5, A6: Real;


Begin
Write(‘X= ’); ReadLn(X);
A1:=4*X;
A2:=3–A1; A3:=X*A2;
A4:=A3–2; A5:=X*A4; A6:=1+A5;

Write(‘A= ’, A6); ReadLn;


End.

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.

84. x berilgan bo‘lsin. A=1+2∙x+3∙x


2
+4∙x
3
ko‘phad qiymatini kamroq amal bajar-
gan holda hisoblab javobini ekranga go‘zal chiqaring (yo‘llanma: avval Gorner
qoidasi bo‘yicha amallar sonini aniqlab, keyin boshqa usullardagi amallar soni
bilan taqqoslang).
85. x berilgan bo‘lsin. A=2∙x
4
–3∙x
3
+4∙x
2
–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 ishlatil-
gan, 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 amal-
larimizni 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.



95
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


ifoda
Misolda
Paskalda
A=1234
5
R5=A–
[A/10]∙10
R5=12345–[12345/10]∙10=
=12345–[1234,5]∙10=
=12345–1234∙10=
=12345–12340=5
R5:=A–
Trunc(A/10)*10;
yoki R5:=A mod 10;
A=1234
5
A=[A/10]
A=[12345/10]=
=[1234,5]=1234
A:=Trunc(A/10);
yoki A:=A div 10;
A=1234
5
R4=A–
[A/10]∙10
R4=1234–[1234/10]∙10=
=1234–[123,4]∙10=
=1234–123∙10=
=1234–1230=4
R4:=A–
Trunc(A/10)*10;
yoki R4:=A mod 10;
A=1234
A=[A/10]
A=[1234/10]=
=[123,4]=123
A:=Trunc(A/10);
yoki A:=A div 10;
A=123
R3=A–
[A/10]∙10
R3=123–[123/10]∙10=
=123–[12,3]∙10=
=123–12∙10=
=123–120=3
R3:=A–
Trunc(A/10)*10;
yoki
R3:=A mod 10;
A=123
A=[A/10]
A=[123/10]=
=[12,3]=12
A:=Trunc(A/10); yoki
A:=A div 10;
A=12
R2=A–
[A/10]∙10
R2=12–[12/10]∙10=
=12–[1,2]∙10=
=12–1∙10=
=12–10=2
R2:=A–
Trunc(A/10)*10;
yoki R2:=A mod 10;
A=12
A=[A/10]
A=[12/10]=
=[1,2]=1
A:=Trunc(A/10); yoki
A:=A div 10;
A=1
R1=A–
[A/10]∙10
R1=1–[1/10]∙10=
=1–[0,1]∙10=
=1–0∙10=
=1–0=1
R1:=A–
Trunc(A/10)*10;
yoki R1:=A mod 10;



96
A=1


A=[A/10]
A=[1/10]=
=[0,1]=0
A:=Trunc(A/10);
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 al-
mashtirib, 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 foy-
dalaniladi, qiymatga ega bo‘lmagan birinchi nollar o‘z-o‘zidan yo‘qolib ketadi,



97
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:
1+2+3+…+N



2
1
N
N

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=1


2
+2
2
+3
2
+…+N
2
yig‘indi qiymatini
hisoblang (yo‘llanma: 1
2
+2
2
+3
2
+…+N
2



 

6
1
N
2
1
N
N





).
93*. Berilgan natural N (<304) da S=1
3
+2
3
+3
3
+…+N
3
yig‘indi qiymatini
hisoblang (yo‘llanma: 1
3
+2
3
+3
3
+…+N
3
=(1+2+3+…+N)
2



2
2
1
N
N








).
94*. Berilgan natural N (<32) da S=1
5
+2
5
+3
5
+…+N
5
yig‘indi qiymatini hisoblang
(yo‘llanma: 1
5
+2
5
+3
5
+…+N
5






12
1
N
2
N
2
1
N
N
2
2
2







).
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)

N
2
).
96*. Berilgan natural N (<46341) da S=1+3+5+…+(2∙N–1) yig‘indi qiymatini
hisoblang.

Yechim:
Quyidagi tengliklarni tahlil etamiz:


1=1
2
1+3=2
2

1+3+5=3
2

1+3+5+7=4
2



98
1+3+5+7+9=5


2

Demak, 1+3+5+…+(2∙N–1)



N
2
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=1


2
+3
2
+5
2
+…+(2∙N–1)
2
yig‘indi qiymatini
hisoblang. (yo‘llanma: 1
2
+3
2
+5
2
+…+(2∙N–1)
2



 

3
1
N
2
1
N
2
N






).
98*. Berilgan natural N (<182) da S=1
3
+3
3
+5
3
+…+(2∙N–1)
3
yig‘indi qiymatini
hisoblang. (yo‘llanma: 1
3
+3
3
+5
3
+…+(2∙N–1)
3

N
2
∙(2∙N
2
–1)).
99*. Berilgan natural N (<513) da S=2
2
+6
2
+10
2
+…+(4∙N–2)
2
yig‘indi qiymatini
hisoblang. (yo‘llanma: 2
2
+6
2
+10
2
+…+(4∙N–2)
2



 

3
1
N
2
1
N
2
N
4







).
100*. Berilgan natural N (<1290) da S=1∙2+2∙3+3∙4+…+N∙(N+1) yig‘indi
qiymatini hisoblang (yo‘llanma: 1∙2+2∙3+3∙4+…+N∙(N+1)

3
1
N∙(N+1)∙(N+2)).
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)

4
1
N∙(N+1)∙(N+2)∙(N+3)).
102*. Berilgan natural N (<2147483647) da kasrli ifodalardan tashkil topgan
S=
)
1
N
(
N
1
...
4
3
1
3
2
1
2
1
1









yig‘indi qiymatini hisoblang.

Yechim:
Kasrlarni sodda kasrlarga yoyish va zarur qisqartirishlar bajarish orqali


quyidagi ko‘rinishiga keltiramiz:
















 






 






 










1
N
1
N
1
...
4
1
3
1
3
1
2
1
2
1
1
1
)
1
N
(
N
1
...
4
3
1
3
2
1
2
1
1

1
N


N
1
N
1
1
1
N
1
N
1
N
1
...
4
1
4
1
3
1
3
1
2
1
2
1
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.



99
103*. Berilgan natural N (<536870912) da kasrli ifodalardan tashkil topgan


S=
)
1
N
4
(
)
3
N
4
(
1
...
13
9
1
9
5
1
5
1
1











yig‘indi


qiymatini
hisoblang
(yo‘llanma:
)
1
N
4
(
)
3
N
4
(
1
...
13
9
1
9
5
1
5
1
1













1
N
4
N


).
104*. Berilgan natural N (<2147483644) da kasrli ifodalardan tashkil topgan
S=
)
4
N
(
)
3
N
(
1
...
7
6
1
6
5
1
5
4
1










yig‘indi qiymatini hisoblang (yo‘llanma:
)
4
N
(
)
3
N
(
1
...
7
6
1
6
5
1
5
4
1











)
4
N
(
4
N


ayniyatni hosil qiling, oxirigi
ifodani Paskalda S:=(N/4)/(N+4) kabi yozing).
105*. Berilgan natural N (<715827882) da kasrli ifodalardan tashkil topgan
S=
)
1
N
3
(
)
2
N
3
(
1
...
10
7
1
7
4
1
4
1
1











yig‘indi


qiymatini
hisoblang
(yo‘llanma:
)
1
N
3
(
)
2
N
3
(
1
...
10
7
1
7
4
1
4
1
1













1
N
3
N


).
106*. Berilgan natural N (<2147483647) da kasrli ifodalardan tashkil topgan
S=
)
1
N
7
(
)
6
N
7
(
7
...
22
15
7
15
8
7
8
1
7











yig‘indi


qiymatini
hisoblang
(yo‘llanma:
)
1
N
7
(
)
6
N
7
(
7
...
22
15
7
15
8
7
8
1
7













1
N
7
N
7



ayniyatni hosil
qiling, oxirigi ifodani Paskalda S:=N/(N+1/7) kabi yozing).
107*. Berilgan natural N (<2147483647) da kasrli ifodalardan tashkil topgan
S=
)
4
N
4
(
N
4
1
...
16
12
1
12
8
1
8
4
1











yig‘indi qiymatini hisoblang (yo‘llanma:
)
4
N
4
(
N
4
1
...
16
12
1
12
8
1
8
4
1












)
1
N
(
16
N


).
108*. Berilgan natural N (<46341) da S=


)
1
N
2
(
1
N
2
N
...
7
5
3
5
3
2
3
1
1
2
2
2
2











yig‘indi qiymatini hisoblang (yo‘llanma: kasrlarni sodda kasrlarga yoyib, zarur


qisqartirishlar bajarib






1
N
2
2
1
N
N
)
1
N
2
(
1
N
2
N
...
7
5
3
5
3
2
3
1
1
2
2
2
2


















ayni-
yatni hosil qiling).
109*. Berilgan natural A (<1073741823) va natural N (<1073741823) da
S=
)
N
A
(
)
1
N
A
(
1
...
)
2
A
(
)
1
A
(
1
)
1
A
(
A
1












yig‘indi qiymatini hisoblang
(yo‘llanma:
)
N
A
(
A
N
)
N
A
(
)
1
N
A
(
1
...
)
2
A
(
)
1
A
(
1
)
1
A
(
A
1















ayni-
yatni hosil qiling, oxirigi ifodani Paskalda S:=(N/A)/(A+N) kabi yozing).



100
110*.


Berilgan
1
dan
katta
natural
N
(<2147483647)
da
P=





 







 






 






 
2
N
1
1
...
16
1
1
9
1
1
4
1
1
ko‘paytma qiymatini hisoblang (yo‘llanma:





 







 






 






 
2
N
1
1
...
16
1
1
9
1
1
4
1
1

N
2
1
N


ayniyatdan foydalaning, oxirigi ifodani
Paskalda P:=(N+1)/2/N kabi yozing).
111*.
Berilgan
natural
1
dan
katta
N
(<2147483647)
da
S=
N
1
N
2
Ln
2
Ln
1
...
16
Ln
8
Ln
1
8
Ln
4
Ln
1
4
Ln
2
Ln
1









yig‘indi qiymatini hisoblang
(yo‘llanma:
N
1
N
2
Ln
2
Ln
1
...
16
Ln
8
Ln
1
8
Ln
4
Ln
1
4
Ln
2
Ln
1










2
Ln
1
N
1
1
2






 
).
112*. Berilgan natural N (<2147483647) da N ta ildiz qatnashgan
S=
2
...
2
2
2



son
qiymatini


hisoblang
(yo‘llanma:
2
...
2
2
2





1
N
2
cos
2


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=
3
N
sin
...
3
2
sin
3
sin







yig‘indi


qiymatini
hisoblang
(yo‘llanma:
3
N
sin
...
3
2
sin
3
sin









3
)
1
N
(
sin
6
N
sin
2







).
114*. Berilgan natural N (<2147483647) da trigonometrik funksiya qatnashgan
S=
2
N
2
1
arctg
...
8
1
arctg
2
1
arctg




yig‘indi qiymatini hisoblang (yo‘llanma:
2
N
2
1
arctg
...
8
1
arctg
2
1
arctg





1
N
N
arctg

).

6-§. GRAFIKA MASALALARI


115. (40,55) nuqtadan (550,400) nuqtagacha to‘g‘ri chiziq chizing (yo‘llanma:
to‘g‘ri chiziq chizish uchun Line(X1,Y1,X2,Y2) protsedurasidan foydalaning).
116. (11,200) nuqtadan (89,0) nuqtagacha qizil rangli to‘g‘ri chiziq chizing
(yo‘llanma: rang tanlash uchun SetColor(Red) yoki SetColor(4), to‘g‘ri chiziq
chizish uchun Line(X1,Y1,X2,Y2) protseduralaridan foydalaning).
117. (0,0) nuqtadan (640,350) nuqtagacha yashil rangli to‘g‘ri chiziq chizing
(yo‘llanma: SetColor(Rang), Line(X1,Y1,X2,Y2) protseduralari).
118. (10,15) nuqtadan (10,200) nuqtagacha qizil rangli, (510,15) nuqtadan
(510,200) nuqtagacha sariq rangli to‘g‘ri chiziq chizing (yo‘llanma: har bir chiziq
rangini SetColor(Rang) yordamida tanlang, to‘g‘ri chiziqlar chizish uchun



101
Line(X1,Y1,X2,Y2) protsedurasidan foydalaning).


119. (10,15) nuqtadan (510,15) nuqtagacha yashil rangli, (10,200) nuqtadan
(510,200) nuqtagacha ko‘k rangli to‘g‘ri chiziq chizing (yo‘llanma: SetCol-
or(Rang), Line(X1,Y1,X2,Y2) protseduralari).
120*. (10,15), (10,200), (510,15), (510,200) nuqtalarni berilgan ketma-ketlikda
tutashtiruvchi to‘rtta chiziq yordamida chegarasi sariq rangli to‘rtburchak chizing
(yo‘llanma: SetColor(Rang), Line(X1,Y1,X2,Y2) protseduralari).
121*. (320,50), (200,290), (440,290) nuqtalarni tutashtiruvchi uch xil rangli
chiziq chizing (yo‘llanma: SetColor(Rang), Line(X1,Y1,X2,Y2) protseduralari).
122*. Ichma-ich joylashgan 3 ta to‘rtburchak chizing.

Yechim:
To‘rtburchaklarni bir necha usulda chizish mumkin. Masalan, 12 ta


Line(X1,Y1,X2,Y2) protsedurasi yordamida murakkab usulda ixtiyoriy
to‘rtburchaklarni yoki 3 ta Rectangle(X1,Y1,X2,Y2) protsedurasi yordamida
oson
usulda
chiziqlari
koordinata
o‘qlariga parallel faqat to‘g‘ri
to‘rtburchaklarni. Masala shartida to‘rtburchaklarni shakliga birorta chegaralash
berilmagani uchun, albatta, oson usulni tanlaymiz.
Ma’lumki, Rectangle(X1,Y1,X2,Y2) protsedurasi ekranda yuqori chap bur-
chagi (X1,Y1) koordinatali va quyi o‘ng burchagi (X2,Y2) koordinatali nuqtada
bo‘lgan to‘g‘ri to‘rtburchak chizadi. Shuning uchun to‘rtburchaklarni yuqori
chap burchagi va quyi o‘ng burchagini ichma-ich joylashishini hisobga olgan
holda aniqlab olish kerak.
Har bir to‘rtburchak ajralib turishi uchun SetColor(Rang) protsedurasi
yordamida turli ranglarni tanlash maqsadga muvofiq.
Masalan:

Bu to‘rtburchaklarni ranglari uch xil: ko‘k – Blue, qizil – Red va yashil –


Green.
Dasturi:
Uses Graph;
Var gd, gm : Integer;
(0,0)
(0,639)
(479,639)
(479,0)
50
90
420
300
(90,50)
(420,300)
100
230
150 200
350
290
130
200
(350,230)
(290,200)
(150,100)
(200,130)



102
Begin gd:=0; InitGraph(gd, gm, ‘’);


SetColor(Blue); Rectangle(90,50,420,300);
SetColor(Red); Rectangle(150,100,350,230);
SetColor(Green); Rectangle(200,130,290,200);
Readln; CloseGraph;
End.

123*. Ichma-ich joylashgan 4 ta uchburchak chizing (yo‘llanma: 12 ta


Line(X1,Y1,X2,Y2) protsedurasi yoki 4 ta DrawPoly(4,KM) protsedurasi
yordamida chizing, rang uchun SetColor(Rang) protsedurasi).
124*. Birini yuqorisida ikkinchisi tegib joylashgan 2 ta to‘rtburchak chizing
(yo‘llanma: 8 ta Line(X1,Y1,X2,Y2) protsedurasi yoki 2 ta Rectan-
gle(X1,Y1,X2,Y2) protsedurasi, rang uchun SetColor(Rang) protsedurasi).
125*. Birini uchiga ikkinchisi tegib joylashgan 2 ta uchburchak chizing
(yo‘llanma: 6 ta Line(X1,Y1,X2,Y2) protsedurasi yoki 2 ta DrawPoly(4,KM)
protsedurasi, rang uchun SetColor(Rang) protsedurasi).
126*. Yonma-yon biriga ikkinchisi tegib joylashgan 3 ta to‘rtburchak chizing
(yo‘llanma: 12 ta Line(X1,Y1,X2,Y2) protsedurasi yoki 3 ta Rectan-
gle(X1,Y1,X2,Y2) protsedurasi, rang uchun SetColor(Rang) protsedurasi).
127*. Yonma-yon biriga ikkinchisi tegib joylashgan 4 ta uchburchak chizing
(yo‘llanma: 12 ta Line(X1,Y1,X2,Y2) protsedurasi yoki 4 ta DrawPoly(4,KM)
protsedurasi, rang uchun SetColor(Rang) protsedurasi).
128*. Diagonallari (10,10) va (310,310) nuqtalarni tutashtiruvchi sariq rangli
kesma bilan ustma-ust tushuvchi 2 ta tutashmaydigan to‘rtburchak chizing
(yo‘llanma: Rectangle(10,10,310,310) protsedurasi yordamida 1-to‘rtburchakni,
nuqtalarni diagonal bo‘yicha surib 2-to‘rtburchakni, Line(X1,Y1,X2,Y2)
yordamida sariq chiziq chizing, rang uchun SetColor(Rang) protsedurasi).
129. Diagonallari (10,10) va (310,310) nuqtalarni tutashtiruvchi sariq rangli kes-
ma bilan ustma-ust tushuvchi 2 ta tutashmaydigan kvadrat chizing.
130. Umumiy uchga ega ikki xil rangli 2 ta uchburchak chizing (yo‘llanma: 6 ta
Line(X1,Y1,X2,Y2) protsedurasi yoki 2 ta DrawPoly(4,KM) protsedurasi, rang
uchun SetColor(Rang) protsedurasi).
131. Umumiy tomonga ega ikki xil rangli 2 ta uchburchak chizing, umumiy
tomon uchinchi rangda bo‘lsin.
132. Teskari simmetrik ikki xil rangli 2 ta uchburchak chizing, ichi uchinchi rang-
da bo‘lsin (yo‘llanma: bir xil rangli 6 ta Line(X1,Y1,X2,Y2) protsedurasi yoki 2
ta DrawPoly(4,KM) protsedurasi, ichini SetFillStyle(usul,rang) va Flood-
Fill(A,B,D) protseduralari yordamida bo‘yang, keyin yana SetColor(Rang)
protsedurasi yordamida uchburchak chegaralarini chizing).
133. Beshburchak rasmini turli rangli chiziqlar yordamida chizing.
134*. Beshburchak rasmini bir xil rangli chiziqlar yordamida chizing va ichini
bo‘yang (yo‘llanma: SetColor(Rang), 5 ta Line(X1,Y1,X2,Y2), SetFill-
Style(usul,rang) va FloodFill(A,B,D) protseduralari yoki SetColor(Rang), SetFill-



103
Style(usul,rang) va FillPoly(5,KM) protseduralari yordamida chizing).


135. Radiusi R ga teng sariq rangli aylana chizing.
136*. Ekranning o‘rtasida radiusi 100 dan kichik sariq rangli 4 ta konsentrik
(ya’ni markazi bir nuqtada) aylana chizing.

Yechim:
Aylanalar chizig‘i rangi sariq bo‘lishi uchun barcha aylanaga bitta


Setcolor(yellow); protsedurasi qo‘llaniladi. Ma’lumki, Circle(X,Y,R)
protsedurasi markazi (X,Y) nuqtada va radiusi R ga teng aylana chizadi.
Shuning uchun barcha aylana uchun Circle(X,Y,R) protsedurasida markazni
X=320, Y=240 kabi tanlanadi. Endi 4 ta radiusni 100 dan kichik bo‘lgan
sonlar, masalan, 40, 55, 70, 85 kabi tanlash mumkin.
Dasturi:
Uses Graph;
var gd, gm: Integer;
Begin
gd:= 0; InitGraph(gd, gm, '');
Setcolor(yellow);
Circle(320,240,45);
Circle(320,240,60);
Circle(320,240,75);
Circle(320,240,90);
Readln; CloseGraph;
end.

Natijaning ekrandagi ko‘rinishi:


137. To‘g‘ri chiziqlar yordamida chegarasi yashil rangli archa rasmini chizing.


138*. To‘g‘ri chiziqlar yordamida chegarasi yashil rangli archa rasmini chizing va
ichini ko‘k rangga bo‘yang.
139. Ichi fon rangida bo‘lgan (10,15), (510,200) nuqtalarni tutashtiruvchi yashil
rangli to‘rtburchak chizing.
140. Ichi qizil rangda bo‘lgan (510,200), (10,15) nuqtalarni tutashtiruvchi yashil
rangli to‘rtburchak chizing.
141*. Qizil rangli muntazam beshburchak chizing.

Yechim:
Matematika fanidan ta’rifiga ko‘ra,


R
y
sin


va
R
x
cos


. Bundan markazi (0,0) nuqtada bo‘lgan R
radiusli aylananing (x, y) nuqtalarini quyidagi formu-
lalar juftligi orqali aniqlash mumkinligi kelib
chiqadiki: x = r·cos(

), y = r·sin(

), bu yerda

burchak 0 dan 2·

gacha
o‘zgaradi.
Dasturda aylana nuqtalarini chizishda

burchakka mos piksellar butun

Download 372.89 Kb.

Do'stlaringiz bilan baham:
1   ...   58   59   60   61   62   63   64   65   ...   68




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