Murakkab malumotlar tuzilmalari: Ustuvor navbatlar.. Bajardi: Avazov Ozodbek Toshkent 2019 Labaratoriya ishi topshiriqlari Variant-2
Download 174.35 Kb.
|
al lab3
- Bu sahifa navigatsiya:
- Bajardi:Avazov Ozodbek Toshkent 2019 Labaratoriya ishi topshiriqlari Variant-2
O’zbekiston Respublikasi Axborot Texnologiyalari va kommunikatsiyalarni rivojlantirish Vazirligi Muhammad Al-Xorazmiy nomidagiToshkent Axborot Texnologiyalari Universiteti. Labaratoriya ishi -3 Mavzu: : Murakkab malumotlar tuzilmalari: Ustuvor navbatlar. . Bajardi:Avazov Ozodbek Toshkent 2019 Labaratoriya ishi topshiriqlari Variant-2 Ixtiyoriy dasturlash tilida Matrix ni ifodalov dastur tuzing va uning strukturasini grafik ko’rinishda tushuntiring. Chiziqli tenglamalar tizimining Kramer uslibi bilan yechilishining algoritimining blok sxemasi rasmda ketirilgan. #include #include using namespace std; /* -1 sonin belgili bir darajaga kotarish funktsiyasi*/ int mypow(int x){ int y=1; for(int z=1;z<=x;z++){ y*=-1;
} return y; } /*matritsaning klassi*/ class matrix{ public: /*Konstruktor: barsha elementlari 0,ulcham 0 */ matrix(){ size=0; for(int x=0;x<=100;x++) for(int y=0;y<=100;y++) m[x][y]; } /*Aniqlavchini hisoblash rekursiv funktsiyasi */ int GetDet(){ int result=0; if(size==1){ //Agar matritsaning ulcham 2 bulsa, u holda aniqlavshini hisoblaymiz return m[0][0]*m[1][1]-m[0][1]*m[1][0]; } else{ /*Qator va ustinni chizish yoli bilan aniqlavchini hisoblaymiz. Elementlarni birinchi qatordan olamiz. */ for(int x=0;x<=size;x++){ result+= mypow(x+2)*m[0][x]*(GetNew(x)).GetDet(); //Rekursiya... } return result; } } /*Birinchi (nolinchi) qatorni va x chi ustinni chizish yoli bilan eski matritsadan yangi matritsani olish.*/ matrix GetNew(int st){ matrix result; int z=0; result.size=size-1; for(int x=1;x<=size;x++){ for(int y=0;y<=size;y++){ if(y!=st){ result.m[x-1][z]=m[x][y]; z++; } } z=0; } return result; } /*Ekranga kvadrat matritsani chiqarish funktsiyasi*/ void echo(void){ for(int x=0;x<=size;x++){ for(int y=0; y<=size;y++){ cout< cout<<"\r\n"; } } /* Ekranga ustin- matritsani chiqarish funktsiyasi */ void echoEx(void){ f
or(int x=0;x<=size;x++){ cout< Matritsaning ulchamin ornatish funktsiyasi*/ inline void SetSize(int r){ size=r; } /*Elementningmanosin ornatish funtsiyasi*/
inline void SetValue(int value, int x , int y){ m[x][y]=value; } /* Kolonkani ustin-matritsaga olmashtirish funtsiyasi*/ i
nline void SetColumn(int column , matrix source){ for(int x=0;x<=size;x++){ m[x][column]=source.m[x][0]; } }
private: int m[100][100]; //matritsaning ozi int size;
//ulcham }; i nt _tmain(int argc, _TCHAR* argv[]) { matrix first,second,temp; //Bizning matritsalar int element,size,maindet; //kerakli uzgaruvchilar
bool c=1; //tsikl uchun cout<<"Chiziqli algebraik tenglamalar tizimini Kramer uslubida yechish Shanazarov Qiyas\r\n\r\n"; while(c){ cout<<"\r\nMatritsaning o'lchamini kiriting:"; /*Bunda matritsa birinchi ustinan boshlanadi, C-c da 0-chidan */
cin>>size; first.SetSize(size); second.SetSize(size); /* Asosiy matritsani kiritish */ for(int x =0; x<=size; x++){ for( int y=0; y<=size;y++){
cout<<"\r\nKiriting ["< cin>>element; first.SetValue(element,x,y); } } /* ustin-matritsani sonlari bilan kiritish*/ for(int x=0; x<=size ; x++){
cout<<"\r\nKiriting "< cin>>element; second.SetValue(element,x,0); }
maindet = first.GetDet(); //Asosiy anilavchini hisoblash if(maindet!=0){ for(int x=0;x<=size;x++){ //elementlar soni == asosiy matritsaning ulchami. //Kolonkani olmashtiramiz, aniqlavchini hisoblaymiz, asosiy anilavshiga bolamiz, imkoni bolsa qisqartish va chiqarish
temp = first; temp.SetColumn(x,second); // kolonkani olmashtiramiz
cout<<"\r\nElement "< cout<<"\r\nYangi matritsa aytasizmi(1/0)??:";
cin>>c; } return 0; } |
ma'muriyatiga murojaat qiling