Qabul qildi: Abdulxamidov A



Download 471,97 Kb.
bet2/2
Sana12.06.2022
Hajmi471,97 Kb.
#656826
1   2
Bog'liq
xHqgJG8Tsqq7Yp0GPl7i5Bbw6zlTxXi-


§ Taqqoslashlar soni
S= N(N-1)/2=(N2-N)/2
§ Massiv tartiblanganda o„rinlashtirishlar soni
Mmin=3(N-1)
§ Massiv teskari tartiblanganda o„rinlashtirishlar soni
Mmin=MminN/2=3N(N-1)/2
Ushbu usul bo„yicha saralash bajarilsa, eng yomon holda taqqoslashlar va o„rinlashtirishlar soni tartibi n2 bo„ladi.
Pufaksimon saralash algoritmi
Ushbu usulning g„oyasi quyidagicha: n - 1 marta massivda quyidan yuqoriga qarab yurib kalitlar jufti-jufti bilan taqqoslanadi. Agar pastki kalit qiymati yuqoridagi jufti kalitidan kichik bo„lsa, u holda ularning o„rni almashtiriladi (1- rasm).
Misol : massiv - 4, 3, 7, 2, 1, 6.

1-rasm. Pufaksimon saralash usulida massivelementlarining o„rnini almashtirish

Pufaksimon usulni massiv elementlarida pastdan yuqoriga va yuqoridan pastga o„tishni bir vaqtda amalga oshirish natijasida yaxshilash mumkin.


Taqqoslashlar soni:
M=(n/2)(n/2)=n2/4
Almashtirishlar soni:
Cmax=3n2/4

2-rasm. Massivni pufaksimon saralashga misol

2-rasmda berilgan misolda 5 ta elementdan iborat massiv berilgan. Demak, massivda pastdan yuqoriga (yuqoridan pastga) o„tishlar soni 5-1=4 marta bo„ladi. Misoldan ko„rinib turibdiki, algoritm ichki siklda 3-qadamdan boshlab massivni “bekor” qayta ishlaydi, 4-qadamni bajarmasa ham bo„ladi.


Berilgan usullarning afzalligi:
1) Eng sodda algoritm;
2) Amalga oshirish sodda;
3) Qo„shimcha o„zgaruvchilar shart emas.
Kamchiliklari:
1) Katta massivlarni uzoq qayta ishlaydi;
2) Har qanday holatda ham o„tishlar soni kamaymaydi.
“Pufaksimon” usulni yaxshilash
1) Agar massivda o„tishlar nafaqat yuqoridan pastga, balki bir vaqtning o„zida pastdan yuqoriga ham bo„lsa, u holda “yengil” elementlar “yuqoriga suzib” chiqadi va “og„ir” elementlar esa “cho„kadi”.
2) Massivda “bekor” o„tishni yo„q qilish uchun, tashqi siklda massiv saralanganligini tekshiruvchi belgi qo„yish lozim.
for (int i=0;ifor (int j=n-1;j>i;j--)
if (a[j] < a[j - 1]){
int x= a[j - 1];
a[j - 1] = a[j];
a[j] = x; }
O’rinlashtirish va taqqoslashlar soni: (n* log( n )).

Quiksort – tez saralash algoritmi


Bu algoritm “bo„lib ol va egalik qil” tamoyilining yaqqol misolidir. Bu algotirm rekursiv bo„lib, o„rtacha N*log2N ta solishtirish natijasida saralaydi. Algoritm berilgan massivni saralash uchun uni 2 taga bo„lib oladi. Bo„lib olish uchun ixtiyoriy elementni tanlab undan 2 ta qismga ajratiladi. Lekin o„rtadagi elementni tanlab, massivning teng yarmidan 2 ga ajratgan ma‟qul. Tanlangan kalit elementga nisbatan chapdagi va o„ngdagi har bir element solishtiriladi. Kalit elementdan kichiklar chapga, kattalar o„ng tomonga o„tkaziladi (6.3-rasm). Endi massivning har ikkala tomonida xuddi yuqoridagi amallar takrorlanadi. Ya‟ni bu oraliqlarning o„rtasidagi elementlar kalit sifatida olinadi va h.k.
Misol uchun rasmdagi massivni saralash algoritmini ko„rib chiqamiz.
1. Oraliq sifatida 0 dan n-1 gacha bo„lgan massivning barcha elementlarini olamiz.
2. Oraliq o„rtasidagi kalit elementni tanlaymiz, ya‟ni
key=(+)/2, i=,
j=.

3-rasm. Quicksort algoritmida o„rinlashtirish
3. Chapdagi i-elementni key bilan solishtiramiz. Agar key kichik bo„lsa, keyingi qadamga o„tamiz. Aks holda i++ va shu qadamni takrorlaymiz.
4. O„ngdagi j-element bilan key solishtiriladi. Agar key katta bo„lsa, keyingi qadamga o„tamiz, aks holda j-- va shu qadamni takrorlaymiz.
5. i- va j-elementlarning o„rni almashtiriladi. Agar i<=j bo„lsa, 3-qadamga o„tiladi.

Birinchi o„tishdan keyin tanlangan element o„zining joyiga kelib joylashadi.


6. Endi shu ko„rilayotgan oraliqda key kalitning chap tomonida elementlar mavjud bo„lsa, ular ustida yuqoridagi amallarni bajarish lozim, ya‟ni ko„riladigan oraliq 0 dan key-1 gacha deb belgilanadi va 2-qadamga o„tiladi. Aks holda keyingi qadamga o„tiladi.
7. Endi shu ko„rilayotgan oraliqda key kalitning o„ng tomonida elementlar mavjud bo„lsa, ular ustida yuqoridagi amallarni bajarish lozim, ya‟ni ko„riladigan oraliq key+1 dan n-1 gacha deb belgilanadi va 2-qadamga o„tiladi. Aks holda algoritm tugaydi.

Shu algoritmga misol ko„rib chiqamiz.


Misol: Talabalar ism-sharifi va tartib raqamidan iborat jadvalni quicksort algoritmi bilan saralang va nechta o„rinlashtirish amalga oshirilganini aniqlang.
Dastur kodi
#include
#include
using namespace std;
struct table{
int t;
string FIO;};
int q=0;
void qs(table *a,int first,int last){
int i = first, j = last;table x =a[(first + last) / 2];
do {
while (a[i].FIO < x.FIO) i++;
while (a[j].FIO > x.FIO) j--;
if(i <= j) {
if (i < j){ swap(a[i], a[j]);q++;}
i++;
j--;
}
} while (i <= j);
if (i < last)
qs(a,i,last);
if (first < j)
qs(a,first,j);
}
int main(int args, char *argv[])
{ int n;cout<<"n=";cin>>n;
table talaba[n];
for(int i=0;italaba[i].t=i+1;
cin>>talaba[i].FIO;
}
qs(talaba,0,n-1);
for(int i=0;icout<cout<<"quicksort algoritmi "<}
Dastur natijasi:
talabalar sonini kiriting=5
5 ta talabalar FIO sini kiriting
Farhod
Asror
Sobir
Bobur
Vali
| 2 | Asror |
| 4 | Bobur |
| 1 | Farhod |
| 3 | Sobir |
| 5 | Vali |
Bu algoritm jadvalni 3 ta o‘rinlashtirishda saraladi

LABORATORIYA ISHI - 21


Mavzu: Bog’langan graflarda marshrutlar, ularni narxi(masofasi) bo’yicha baholash.
Ishdan maqsad. Bog’langan graflarda marshrutlar, ularni narxi(masofasi) bo’yicha baholashni o’rganish.
Qo’yilgan masala. Bog’langan graflarda marshrutlar, ularni narxi(masofasi) bo’yicha baholash.
Ish tartibi:
Tajriba ishi nazariy ma’lumotlarini o‘rganish;
Berilgan topshiriqning algoritmini ishlab chiqish;
C++ dasturlash muhitida dasturni yaratish;
Natijalarni tekshirish;
Hisobotni tayyorlash va topshirish.

Nazariy qism


Juda ko`p masalalarni yechish algoritmlarida algoritmning shunday bir qismi uchraydiki, bunda ma`lum guruh amallari ko`p marta takrorlanadi. Algoritmda takrorlanuvchi qism mavjud bo`lsa, bunday algoritmlar takrorlanuvchi (siklli) algoritmlar dеb ataladi.
yig`indini hisoblash algoritmining ikki xil ko`rinishi bеrilgan. Bu ikki algoritm takrorlanuvchi jarayonning takrorlanish bloki (a) va tarmoqlanish bloki (b) yordamida tasvirlanishidir.




a) b)

1- rasm.
Ifodalarni hisoblash algoritmlari.

Chiziqli jarayonlarni algoritmlarini tuzish.
Son qiymat qabul qiluvchi ifodani arifmеtik ifoda dеb ataymiz va uni qisqacha  dеb, uning qiymatini esa s dеb bеlgilaymiz, ya`ni

(1)
Bunda (1) ga mos misollar quyidagicha bo`lishi mumkin:
(2)
Bu turdagi misollarni algoritmini tuzishda, ya`ni bеrilgan ifoda qiymatini hisoblash uchun ifodadagi o`zgaruvchilarning qiymati oldindan ma`lum bo`lishi kеrak. (2) ko`rinishidagi misollarni yechish algoritmi chiziqli jarayonlarning algoritmlari dеyiladi.

Chiziqli algoritmlar dеb, agar algoritm blok-sxеma shaklida bеrilib, har bir bloki faqat bir marta bajariladigan algoritmlarga aytiladi.


Endi (2) ko`rinishidagi misollarning ba`zilarini misol tariqasida blok-sxеmalarini tuzaylik.
2-rasmdagi blok-sxеma yuqorida kеltirilgan  misolning algoritmidir. Bu blok-sxеmada hisoblash jarayonining EHMda qanday kеchishini y axshiroq tasavvur qilish uchun 3–rasmdagi blok sxеmani ishlash jarayonini ko`rib chiqamiz.3-rasmdagi algoritm bo`yicha tuzilgan dastur mashina xotirasiga kiritilgan dеb faraz qilaylik. EHM translyatori dasturni mashina tiliga o`tkazish paytida algoritmda uchragan har bir o`zgaruvchiga xotirasidan joy ajratadi va ajratilgan joy makonini shu o`zgaruvchilarning nomiga moslaydi.
LABORATORIYA ISHI - 22
Mavzu: Xasis algoritmlar. Eng qisqa marshrutni aniqlash algoritmi. Uni variantlar soni bo’yicha hajmini baholash.
Ishdan maqsad. Xasis algoritmlar. Eng qisqa marshrutni aniqlash algoritmi. Uni variantlar soni bo’yicha hajmini baholashni o’rganish.
Qo’yilgan masala. Xasis algoritmlar. Eng qisqa marshrutni aniqlash algoritmi. Uni variantlar soni bo’yicha hajmini baholash.
Ish tartibi:
Tajriba ishi nazariy ma’lumotlarini o‘rganish;
Berilgan topshiriqning algoritmini ishlab chiqish;
C++ dasturlash muhitida dasturni yaratish;
Natijalarni tekshirish;
Hisobotni tayyorlash va topshirish.

Nazariy qism


Komponentlar palitrasi bizga kerakli ob`ekt(komponent)ni tanlab undan foydalanish imkoniyatini yaratadi. Komponentdan foydalanish uchun dastlab sichqonchaning chap tugmasi kerakli komponent, so`ngra formaning sirtida bosiladi. Formadagi komponentning turgan joyini o`zgartirish uchun sichqonchadan foydalanish mumkin.
Komponentlar palitrasi guruhlar bo`yicha sahifalarga bo`lingan bo`lib, sahifalar soni 14 tadir. Komponentlar palitrasida Standard, Additional, Dialogs kabi sahifalar mavjud. Istalgan sahifa sirtida sichqonchaning chap tugmasi bosilsa, tanlangan sahifadagi komponentlar ro`yhati chqarib beriladi. Quyidagi rasmda komponentlar palitrasining ko`rinishi keltirilgan:

Tanlangan komponent “Objekt Inspector” oynasi yordamida tahrirlanadi.

Xususiyat


Delphida barcha ob`ektning o`ziga hos xususiyati (Properties) bo`lib, bu xususiyatlar dastuchi tomonidan o`zgartirilishi mumkin. Barcha ob`ektlarning xususiyatlari bir-biriga juda o`xshash bolib, biz misol sifatida “Label” ob`ektining xususiyatlari bilan tanishamiz.
Ob`ekt xususiyatini o`zgartirish uchun “Object Inspector” oynasining “Properties” bo`limidan foydalanamiz. Dastlab Label komponentini formaga joylaymiz. Dasturning forma ko`rinishi quyidagicha bo`ladi:

Label komponentining xususiyatlari quydagilardir:

Align – Ob`ektning joylashish o`rnini o`zgartiradi. Unda alButton, alClient, alLeft, alNone, alRight, alTop ko`rsatkichlari mavjud bo`lib, ular quyidagi vazifalarni bagaradi:




Ko`rsatkich

Vazifasi

alNone

Formaning ko`rsatilgan qismida

alTop

Formaning yuqori qismida

alBottom

Formaning quyi qismida

alLeft

Formaning chap qismida

alRight

Formaning o`ng qismida

alClient

Formaning barcha qismida

Alignment – O`bekt tarkibidagi matn o`rnini gorizontal yo`nalish bo`yicha o`zgartirish. Undagi ko`rsatrichlarning vazifasi quyidagicha:



Ko`rsatkich

Vazifasi

taLeftJsirtify

Matn ob`ektning chap qismida

taRightJsirtify

Matn ob`ektning o`ng qismida

taCenter

Matn ob`ektning o`rta qismida

Anchors – forma hajmi o`zgarishiga qarab ob`ektning turgan joyini o`zgartirish (ko`rsatkich True bo`lgandagina aktivlashadi). Undagi ko`rsatrichlarning vazifasi quyidagicha:



Ko`rsatkich

Vazifasi

taTop

Ob`ektning turgan joyi formani yuqori qismi bo`yicha o`zgarmaydi

taLeft

Ob`ektning turgan joyi formani chap qismi bo`yicha o`zgarmaydi

taRight

Ob`ektning turgan joyi formani o`ng qismi bo`yicha o`zgarmaydi

taButton

Ob`ektning turgan joyi formani ostki qismi bo`yicha o`zgarmaydi

AutoSize – Ob`ekt hajmini o`zgaruvchan yoki o`zgarmas holiga keltirish. Ko`rsatkich True bo`lganida ob`ekt hajmi o`zgaruvchan, aks holda o`zgamas bo`ladi.

Amliy qism
Yuqoridagi amallar bajarilgach, dastur ishga yuklanidan so`ng formaning istalgan qismida sichqonchaning chap tugmasi bosilsa quyidagi oyna hosil bo`ladi:

Yuqoridagi misoldan ko`rinib turibdiki, qandaydir xodisa ro`y berganida javob olish mumkin ekan. Ko`pchilik dasturchilar bu vaqtda qanday jarayon bo`layotganligini tushunmay dastur tuzadilar. Shuni aytish mumkinki, har-bir xodisa ro`y berganida operatsion sistema bu xodisani aniqlaydi va dasturga xodisaning turi xaqidagi xabarni uzatadi. Misol qilib forma sirtida sichqonchaning chap tugmasi bosilganida ro`y beradigan xodisani ko`rishmuz mumkin. Buning uchu xodisa sahifasidan OnMouseDown xodisasi tanlanadi va dasturga quyidagi o`zgartirish kiritiladi:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.TextOut(X, Y, 'X='+IntToStr(X)+' Y='+IntToStr(Y));
end;
Dasturni ishga yuklab forma sirtida sichqonchaning chap tugmasi bosilsa quyidagiga o`xshash natijani ko`rish mumkin:

Ko`rinib turibdiki, xodisalar bilan ishlash unchalik murakkab emas ekan. Yana bir misol sifatida quyidagi dasturni ko`rishimiz mumkin (OnKeyDown (tugmacha bosilganida) xodisasi):
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
MessageDlg(Chr(Key), mtInformation, [mbOk], 0);
end;

LABORATORIYA ISHI - 23


Mavzu: Kruskal algoritmi. Prima algoritmi. Xoffman algoritmi.
Ishdan maqsad. Kruskal algoritmi. Prima algoritmi. Xoffman algoritmini o’rganish.
Qo’yilgan masala. Kruskal algoritmi. Prima algoritmi. Xoffman algoritmi.
Ish tartibi:
Tajriba ishi nazariy ma’lumotlarini o‘rganish;
Berilgan topshiriqning algoritmini ishlab chiqish;
C++ dasturlash muhitida dasturni yaratish;
Natijalarni tekshirish;
Hisobotni tayyorlash va topshirish.

Nazariy qism


Kruskal algoritmi. Dеykstra-Prim algoritmi MOD ni qurishni boshlang’ich grafning ixtiyoriy tugunidan boshlaydi va daraxtning qurilgan qismini tobora kеngaytirib boradi. Ushbu algoritmdan farqli ravishda Kruskal algoritmi asosiy e'tiborni graf tomonlariga qaratadi. Bunda ishni bo’sh grafdan boshlab, unga tomonlarini ular vaznining o’sib borish tartibida kеtma-kеt qo’shib boradi. Bu jarayon grafga kiruvchi barcha tugunlar o’zaro bog’langunga qadar davom etadi. Agar tomonlarni qo’shib olish jarayoni barcha tugunlar o’zaro bog’langunga qadar tugatilsa, boshlan?ich grafning to’liq bog’lanmagan ekanligi kеlib chiqadi. Algoritm ishini yuqorida ko’rib o’tilgan graf uchun MOD ni aniqlash misolida ko’rib o’tamiz. Ishni eng kichik vaznli DF tomondan boshlaymiz. Boshlang’ich garf v rasmda ifodalangan. Navbatda A va V tugunlarni birlashtiruvchi tomon (v rasm), so’ngra vazni 3 ga tеng bo’lgan tomon qo’shiladi va G rasmda ifodalangan grafga ega bo’lamiz. Navbatdagi qadamda 4 va 5 avznga ega bo’lgan tomonlar(D va Е rasmlar) qo’shib olinadi. Natijada qo’shilmagan faqat G tugun qoladi. Kеyingi qadamda vazni 6 ga tеng tomonlarni qayta ishlash kеrak bo’ladi. Vazni 6 ga tеng bo’lgan to’rtta tomondan ikkitasini qoldiramiz. Natijada qaysi ikki tomonning qoldirilishiga bo?liq holda J yoki Z rasmlarda ifodalangan MOD lardan biriga ega bo’lamiz.
a) b)

v) g)



B irinchi hadni qo`shishda har doim oldingi hadni nol dеb olish tavsiya etiladi, chunki yig`indiga nol qo`shgan bilan yig`indi o`zgarmaydi. 3-blokda  paramеtrga boshlang`ich qiymat bеrilayapti ( siklning paramеtri ham dеyiladi), ya`ni 1 qiymat. Umuman  ning boshlang`ich qiymati 1 bo`lishi shart emas. Bеrilgan aniq misolda  qaysi qiymatdan boshlansa, shu qiymatni bеrish kifoya. 4-blokda  ning ayni shu va kеyingi qiymatlari hadlar sonidan oshib kеtmasligi tеkshirilyapti. Agar  ning qiymatlari n dan kichik yoki bunga tеng bo`lsa, 5-blokdagi yig`indi hosil qilinadi va natija S ga yoziladi, kеyin 6-blokda  ning oldingi qiymatiga 1 qo`shiladi. Bu algoritmda  ning qadami ( ga qo`shiluvchi qiymat) 1 olingan, umuman qadam ixtiyoriy bo`lishi mumkin. 6-blokdan so`ng yana 4-blok ishlaydi va  ning qiymatiga qarab 4-, 5-, 6- bloklar t akrorlanib boradi,  ning n dan katta bo`lishi bilan 7- blok bajariladi, ya`ni S ning qiymati chop etiladi va algoritm tugaydi.
Amaliy qism
Ko`paytmalarni hisoblash algoritmlari.
Dasturlash jarayonida ko`p uchraydigan misollardan biri ko`paytmalarning algoritmlarini tuzishdir.Faraz qilaylik,
(6.6)
ko`paytma bеrilgan bo`lsin. Xuddi yig`indilarni hisoblashdagi kabi n va  larni tanlash yo`li bilan turli ko`rinishdagi ko`paytmalarni hosil qilishimiz mumkin. Masalan, n ni 10 va  ni  dеb,
(6.7)
ko`rinishdagi va hokazo ko`paytmalarni hosil qilishimiz mumkin. Agar biz (5.6) ko`paytmaning algoritmini tuzishni bilsak, u holda algoritmda tеgishli o`zgartirishlarni bajarib boshqa ko`rinishdagi ko`paytmalarning algoritmlarini hosil qilsak bo`ladi. Buning uchun blok-sxеmada mos ravishda n va  larning qiymatini almashtirish kifoya. Bu misolda ko`paytmaning boshlang`ich shartlaridan biri S ning qiymatini 1 dеb olamiz. CHunki 1 ni har qayday songa ko`paytmasi shu sonning o`ziga tеng, qolgan mulohazalar xuddi yig`indidagidеk bo`ladi.
F aktoriallarni hisoblash
Faktoriallarni hisoblashda ko`paytmani hisoblash algoritmidan foydalansa ham bo`ladi. Chunki faktoriallar ham chеkli sondagi sonlarning o`zaro ko`paytmalaridir.
Faraz qilaylik,

faktorial bеrilgan bo`lsin. Matеmatika kurslaridan bizga ma`lumki,
yoki 
Uni hisoblash algoritmini blok sxеmasi quyidagicha tashkil qilamiz:

LABORATORIYA ISHI - 24


Mavzu: Kesishmaydigan to’plam ostilari va birlashmalarini qidirish algoritmi.
Ishdan maqsad. Kesishmaydigan to’plam ostilari va birlashmalarini qidirish algoritmini o’rganish.
Qo’yilgan masala. Kesishmaydigan to’plam ostilari va birlashmalarini qidirish algoritmi.
Ish tartibi:
Tajriba ishi nazariy ma’lumotlarini o‘rganish;
Berilgan topshiriqning algoritmini ishlab chiqish;
C++ dasturlash muhitida dasturni yaratish;
Natijalarni tekshirish;
Hisobotni tayyorlash va topshirish.

Nazariy qism


Esingizda bo’lsa bu masalani xasislik algoritmlari orqali yechgandik. Xasislik algoritmlarining xususiyatlaridan kelib chiqib, biz o’shanda 3000 natijasini olgandik. Chunki xasislik algoritmi har doim ham optimal yechimni bermaydi, balki, u yechimni tezkorlik bilan topishga yordam beradi. Yechim yetarlicha bo’ladi, lekin optimal bo’lmasligi mumkin. Masala uchun Xasislik algoritmida algoritm murakkabligi bahosi O(n) ga teng.
Dinamik dasturlashda esa, masalaning optimal yechimi topiladi. Bunda masala qism masalalarga ajratilib keyin umumlashtirilgani uchun yechimni olishda xasislik algoritmidan biroz ko’proq vaqt sarflanadi. Yechim esa optimal bo’ladi. Masala uchun Dinamik dasturlashda algoritm murakkabligi bahosi O(n^2) ga teng.
Amaliy qism
1-misol. Shunday uch xonali son topingki, uni 11 ga bo’lganda bo’linma uning raqamlari yig’indisiga teng bo’lsin.
Program L23;
uses Crt;
var
a, n, p, s : integer;
begin
a := 100;
writeln(' 11 ga bo’lganda bo’linma uning raqamlari yig’indisiga teng ’);
write(‘bo’lgan uch xonali son ');
repeat
n := a; s := 0;
repeat
p := n mod 10;
s := s + p*p;
n := n div 10
until n = 0;
if (a mod 11 = 0) and (s = a div 11) then write(a, '; ');
a := a + 1
until a = 1000;
end.
2- misol. n soning barcha bo’luvchilarini aniqlovchi dastur tuzilsin.
Bunday masala berilganda talabalar ko’pincha quyidagi yechish usulini taklif etishadi.
1 dan to n gacha bo’lgan barcha natural sonlarni ko’rib chiqish kerak, agar ulardan birontasi n soninig bo’luvchisi bo’lsa, uni ekranga chiqarish kerak. Masalan 36 soni uchun tekshirish maqsadida 1, 2, 3, ..., 36 sonlarini olamiz va ulardan 36 ning bo’luvchilarini tanlab olamiz. Bo’luvchilar quyidagilardir: 1, 2, 3, 4, 6, 9, 12, 18 va 36. Bunday usuldan foydalanish mumkin. Lekin, diqqat bilan 36 ning bo’luvchilariga qarab chiqsangiz, bularning barchasi 1 dan to 18 gacha, ya’ni 36 ning yarmigacha bo’lgan oraliqda joylashganligini ko’rasiz, faqatgina oxirgi bo’luvchi - sonning o’zidir. 
Mantiqan o’ylaganda ham, shunga amin bo’lamizki, bo’luvchilar aynan: 1 dan n/2 gacha bo’lgan oraliqda joylashadi.
Agar sonning yarmidan ham katta bo’luvchi bor degan fikr tug’ilsa, uni 2 ga ko’paytirib berilgan sondan katta son hosil qilamiz. Shunday qilib, sonning o’zidan tashqari barcha bo’luvchilari 1 dan n/2 gacha bo’lgan oraliqda joylashishi ayon bo’ladi, demak sonning bo’luvchilarini aynan shu oraliqdan tekshirish kerak. Bu yerdan dasturni tuzish rejasi kelib chiqadi: 1 dan n/2 gacha bo’lgan sikl tashkil etish; agar nson ushbu oraliqdagi biror-bir songa bo’linsa, u holda ushbu bo’luvchi ekranga chiqarilsin; sikl davom ettirilsin; ekranga sonning o’zi chiqarilsin. 

Dastur
Program L24; {Sodda algoritm. 1 - usul }


uses Crt;
var
n, d : integer;
begin
write('Butun sonni kiriting '); readln(n);
d := 1;
writeln(n, 'soning bo’luvchilari ');
repeat
if n mod d = 0 then write(d, ' ');
d := d + 1
until d > n div 2;
write(n)
end.
Lekin bu masalani yechishda ham mashinaga yordam bersa va uning ishini yengillashtirsa bo’ladi. Bu yerda yordamga yana matematika keladi. n soning bo’luvchilarini topish uchun sqrt(n) dan katta bo’lmagan bo’luvchilarni topish yetarli ekan. Qolgan barcha bo’luvchilar n ni topilgan bo’luvchilarga bo’lganda hosil bo’ladi.
Masalan, agar n=30 bo’lsa, u holda faqatgina 1, 2, 3, 5 (30 dan chiqadigan natural kvadrat ildizdan katta bo’lmagan son 5 ga teng) bo’luvchilarni topish yetarli, qolgan bo’luvchilarni esa 30 ni hosil bo’lgan sonlarga bo’lish orqali hosil qilsa bo’ladi:
30 div 1 = 30;
30 div 2 = 15;
30 div 3 = 10;
30 div 5 = 6.

Dasturni tuzishda muammo chiqib qoladi - butun sonlar to’plamida kvadrat ildizni chiqarish funksiyasi yo’q. Bu to’siqni yengib o’tish oson. Qanday qilib deysizmi? Buning uchun d ning 1 dan d*dNima uchun bunday qilish kerak?
Bu 36 soni uchun keltirilgan misolda ravshan bo’ladi. sqrt(36)= 6, dxd < 6 bo’lganicha-sikli;
d = 1, dxd = 1x1 = 1 < 36 (rost),
sikl davom etadi;
qoldiq topiladi: 36 mod 1 = 0; 1 va 36 ni 1 ga bo’lgandagi butun son ekranga chiqariladi, 36 div 1 =36;
d = 2, dxd = 2x2 = 4 < 36 (rost),
sikl davom etadi;
36 mod 2 = 0;
2 va 36 ni 2 ga bo’lgandagi butun son ekranga chiqariladi, 36 div 2 = 18;
d = 3, dxd = 3x3 = 9 < 36 (rost),
sikl davom etadi;
36 mod 3 = 0;
3 va 36 ni 3 ga bo’lgandagi butun son ekranga chiqariladi, 36 div 3 = 12;
d = 4, dxd = 4x4 = 16 < 36 (rost),
sikl davom etadi;
36 mod 4 =0;
4 va 36 div 4 = 9 ekranga chiqariladi;
d = 5, dxd = 5x5 = 25 < 36 (rost),
sikl davom etadi;
36 mod 5 <>0, ekranga hech narsa chiqarilmaydi,
sikl davom etadi;
d = 6, dxd = 6x6 = 36 < 36 (yolg’on), sikl tugatiladi.
d = 6 (dxd = n), 6x6 = 36 tekshiriladi (rost), 6 ekranga chiqariladi.
Agar sikl dxd <= n bo’lguncha davom etganda, u holda d = 6 da ekranga 6 va 36 div 6 = 6 chiqarilar edi, ya’ni ikkita olti, bu esa xato bo’lar edi
Dastur
Program L24a; {Sonning bo’luvchilari. 2 -usul }
uses Crt;
var
n, d : integer;
begin
write('Butun sonni kiriting '); readln(n);
writeln(n, ‘sonining bo’luvchilari’);
d := 1;
while d*d < n do
begin
if n mod d=0 then write(d, ' ', n div d, ' ');
d := d + 1
end;
if d*d = n then write(d); writeln
end.
Xulosa:
Men ushbu labaratoriyalarni bajarish davomida “Ajrat va hukmronlik qil” prinsipi bo’yicha ishlaydigan algoritmlarni loyihalash. Elementlar jamlanmasini biror belgi bo’yicha tartiblashtirish algoritmi. Bog’langan graflarda marshrutlar, ularni narxi(masofasi) bo’yicha baholash. Xasis algoritmlar. Eng qisqa marshrutni aniqlash algoritmi. Uni variantlar soni bo’yicha hajmini baholash. Kruskal algoritmi. Prima algoritmi. Xoffman algoritmi. Kesishmaydigan to’plam ostilari va birlashmalarini qidirish algoritmini o’rgandim.
Foydalanilgan adabiyotlar: http://fayllar.org
Asosiy adabiyotlar
1. Кленберг Дж.,Тардос Е.”Алгоритмы.Разработка и применение”.2016г.
2. Кормен Т.,Лейзерсон Ч.,Ривест Р.«Алгоритмы.Построение и анализ»,2013г.
3. Колдаев. Основы_алгоритмизации_и программирования. 2013 г.
4. Г.Уоррен «Алгоритмические трюки для программистов», 2014 г.
5. Xamedova N.A, Ibragimova Z, Tasetov T. Matеmatika. Darslik. T.: Turon-iqbol, 2007. 363b.(13-17 bet)

Qo‘shimcha adabiyotlar


Abdullayeva B.S., Sadikova A.V., Muxitdinova M.N., Toshpo‘latova M.I., Raximova F. Matematika. TDPU. (Boshlang‘ich ta’lim va sport-tarbiyaviy ish bakalavriyat ta’lim yo‘nalishi talabalari uchun darslik) Toshkent-2012, 284 bet (18-22 bet)
http://fayllar.org

Download 471,97 Kb.

Do'stlaringiz bilan baham:
1   2




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish