O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
«_____KIF____» fakulteti
Laboratoriya ishi
Bajardi: SWD015-L3
Abdivaitova D.
Tekshirdi: Raxmanov Asqar
Toshkent – 2019
4-labaratoriya ishi
DINAMIK MA’LUMOTLAR TUZILMASINI TADQIQ QILISH. CHIZIQLI BOG’LANGAN RO’YHATLAR.
Ishdan maqsad: Chiziqli, bir bog‘lamli ro‘yhatlar tuzilmasini o‘rganish va uni ustida amal bajarish algoritmlarini tadqiq qilish.
Динамик дастурлаш – маълум тузилмада оптимал бошкариш масаласини ечишнинг хисоблаш усулидир.
Динамик дастурлаш(ДД) куп улчамли масалани кичик этапларга декомпозиция килинади ва бир улчовли масалаларни ечиш оркали куп улчамли масалани ечилади. Бу усулда мураккаб масалани ечиш, бир нечта содда оптимизация масалаларни ечиш оркали бажарилади.
Динамик дастурлаш методи кулланилиши:
Бир-бирини тулдирувчи соддарок масалалар ёрдамида ифодалаш мумкин булган масалаларни ечиш;
Бу холда хисоблаш вакти бошка усулларга нисбатан анча кам булади, хисоблашлар жуда осон йул билан амалга оширилади.
1-variant
Elementni n pozitsiyaga siljitish dasturini tuzing.
Dastur kodi
#include
using namespace std;
struct Node
{
int number;
Node* next;
};
int k;
struct Node* head = NULL;
struct Node* lastPtr = NULL;
void qushish()
{
Node* ptr = new Node;
int numb = -1;
cout<<"son kiriting: ";
cin>>numb;
ptr->number = numb;
ptr->next = NULL;
if (head == 0)
{
head = ptr;
lastPtr = ptr;
}
lastPtr->next = ptr;
lastPtr = ptr;
}
void qushish1(int a)
{
Node* ptr = new Node;
int numb = -1;
ptr->number = a;
ptr->next = NULL;
if (head == 0)
{
head = ptr;
lastPtr = ptr;
}
lastPtr->next = ptr;
lastPtr = ptr;
}
void chop_etish()
{
Node* ptr = NULL;
if (head == 0)
{
cout<<"\t!!! ro'yhat bo'sh !!!\n\n";
}
cout<<"* * * * * ro'yhat * * * * *\n\n";
ptr = head;
while (1)
{
cout<
number<<" ";
if (ptr->next == 0) break;
ptr = ptr->next;}
cout<<"\n\n";}
int boshidan_el_uchirish(){
Node* p = new Node;
if (head == NULL)
{
cout<<"ro'yhat bo'sh";
}
else
{
p = head;
head = p->next ;
return p->number;
delete(p);
}
}
int main()
{
int n;
cout<<" Ro'yhat elementlari sonini kiriting:\n";
cin>>n;
cout<<" Ro'yhat elementlarini kiriting:\n";
for(int i=0;i
{
qushish();
}
chop_etish();
cout<<" n siljish pozitsiyasini kiriting: ";
cin>>k;
for(int i=0;i
{
int h=boshidan_el_uchirish();
qushish1(h);
}
cout<<" Ro'yhat "<
chop_etish();
}
Dastur natijasi:
\
16-variant
O’quvchilar familiyalari va imtihon biletlari raqamlaridan tashkil topgan 2 ta halqasimon ro’yhat berilgan. O’quvchilar tomonidan olingan bilet raqamlari aniqlansin. Imtihon biletlari uchun qayta hisoblash soni - E, o’quvchilar uchun esa - K.
Dastur kodi
#include
#include
#include
using namespace std;
struct Node
{
int number;
string ismi;
Node* next;
};
unsigned int n,k;
struct Node* head = NULL;
struct Node* lastPtr = NULL;
void qushish()
{
Node* ptr = new Node;
int numb = -1; string a;
cout<<" ismini kiriting: ";
cin>>a;
cout<<"o'quvchiga tushgan variant: ";
numb=rand()%k+1;
ptr->number = numb;
cout<
number<
ptr->ismi = a;
ptr->next = NULL;
if (head == 0)
{
head = ptr;
lastPtr = ptr;
}
lastPtr->next = ptr;
lastPtr = ptr;
}
void chop_etish()
{
Node* ptr = NULL;
if (head == 0)
{
cout<<"\t!!! ro’yhat bo’sh !!!\n\n";
}
cout<<"* * * * * ro’yhat * * * * *\n\n";
ptr = head;
while (1)
{
cout<
number<<" ";
cout<
ismi<<" \n";
if (ptr->next == 0) break;
ptr = ptr->next;}
cout<<"\n\n";}
void aniqla(string i){
Node* ptr = NULL;
if (head == 0)
{
cout<<"\t!!! ro’yhat bo’sh !!!\n\n";
}
//cout<<"* * * * * ro’yhat * * * * *\n\n";
ptr = head;
while (1)
{
if(i==ptr->ismi)
{
cout<
ismi<<"ga tushgan variant: ";
cout<
number; break;
}
ptr = ptr->next;}
cout<<"\n\n";}
int main()
{
string a;
cout<<" Ro'yhat o'quvchilari sonini kiriting:\n";
cin>>n;
cout<<" Variantlar sonini kiriting:\n";
cin>>k;
cout<<" O'quvchilar ma'lumotlarini kiriting:\n\n";
for(int i=0;i
{
cout<
}
//chop_etish();
cout<<" Kerakli varinatni o'quvchi familiyasini kiriting\n";
cin>>a;
aniqla(a);
}
Dastur natijasi:
\
Xulosa:
Biz bu laborotoriya ishda dinamik ma’lumotlar tuzilmasini tadqiq qilish.Chiziqli bog’langan ro’yhatlar haqida dastur tuzdik har kim o’z varianti bo’yicha misollarni ishladik. Dinamik dasturlash ma'lum tuzilmada оptimal boshqarish masalasini yechishning hisoblash usulidir.
Do'stlaringiz bilan baham: |