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.
|
Algoritmlash va dasturlash asoslari seriyasidan Kitob – II b. J.-fayllar.org
- Bu sahifa navigatsiya:
- Gorner qoidasi [4]
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:
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
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:
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
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:
Son
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=[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:
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
91*. Berilgan natural N (<46341) da S=1+2+3+…+N yig‘indi qiymatini hisoblang. Yechim:
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:
1=1 2 1+3=2 2 1+3+5=3
1+3+5+7=4
98
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:
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 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
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
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
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
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:
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
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
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:
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:
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: |
ma'muriyatiga murojaat qiling