Murakkab malumotlar tuzilmalari: Ustuvor navbatlar.. Bajardi: Avazov Ozodbek Toshkent 2019 Labaratoriya ishi topshiriqlari Variant-2


Download 174.35 Kb.
Sana03.06.2020
Hajmi174.35 Kb.
#113788
Bog'liq
al lab3


O’zbekiston Respublikasi Axborot Texnologiyalari va kommunikatsiyalarni rivojlantirish Vazirligi

Muhammad Al-Xorazmiy nomidagi


Toshkent Axborot Texnologiyalari Universiteti.

Labaratoriya ishi -3



Mavzu: : Murakkab malumotlar tuzilmalari: Ustuvor navbatlar.

.

Bajardi:Avazov Ozodbek

Toshkent 2019

Labaratoriya ishi topshiriqlari

Variant-2

  1. 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; }



Natiyjasi


Download 174.35 Kb.

Do'stlaringiz bilan baham:




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