C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar bajaruvchi dasturlar yaratish
O'ZB Е KISTON RESPUBLIKASI SAMARQAND DAVLAT UNIV Е RSIT Е TI KURS ISHI Mavzu: C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar bajaruvchi dasturlar yaratish Samarqand-2021
Mavzu: C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar bajaruvchi dasturlar yaratish. Reja: 1. C++ dasturlash tili yordamida matritsalar ustida amallar. 2. C++ dasturlash tili yordamida determinantlar ustida amallar. 3. Foydalanilgan adabiyotlar.
1. C++ dasturlash tili yordamida matritsalar ustida amallar. Jadvallar funktsiyalar argumentlari sifatida kelganda jadvallarning birinchi parametridan boshqa parametrining chegaralari ko’rsatilishi shartdir. Misol tariqasida uch o’lchovli kvadrat matritsani uch o’lchovli vektorga ko’paytirish funktsiyasini k’orib chiqamiz: Void Umn_vec( float a[3][3],float b[3], float c[3]) { for(I=0;i<3;++) { c[I]=0; for(j=0;j<3;j++) c[I]+=a[I,j]*b[j]; }; } Har hil chegarali jadvallar bilan funktsiyalardan foydalanishning bir yuli bu oldindan kiritiluvchi konstantalardan foydalanishdir. Lekin asosiy yuli ko’rsatkichlar massivlaridan foydalanish. Matritsani vektorga ko’paytirish funktsiyasi ko’rsatkichlar massivlari yordamida qo’yidagicha yoziladi: Void Umn_vec( int n,float* a[],float b[], float c[]) { int I,j; for(I=0;i c[I]=0; for(j=0;j c[I]+=a[I,j]*b[j]; }; Matritsani matritsaga ko’paytirish funktsiyasi esa qo’yidagicha yoziladi: Void Umn_matr( float* a[],float* b[], float* c[]) { int I,j,k; for(I=0;i
for(j=0;j<n;j++) {c[I,j]=0; for(k=0;k<n;k++) c[I,j]+=a[I,k]*b[j,k]; }; Funktsiyalarda satrli massivlar ishlatilganda ularning chegarasini ko’rsatish shart emas. Satrlarning uzunligini hisoblash len funktsiyasii qo’yidagicha ta'riflash mumkin: Int len(char c[]) { int m=0; for(m=0;c[m]!=’0’;m++); return m; }; Shu funktsiyadan foydalanilgan dasturni keltiramiz: Include # Int len(char c[]) { int m=0; while(c[m++]); return m-1 } void main() {char e[]=”Pro Tempore!”; Cout<<(“\n%I”,len(E)); }; PASKAL' tilida copy funktsiyasi mavjud bo’lib, berilgan satrning, berilgan pozitsiyasidan boshlab berilgan sondagi simvollarini ajratib olishga imkon beradi. Shu funktsiyani C++ tilida qo’yidagicha ta'riflash mumkin:
Void copy(char a[], char b[], int k, int m) { int l; for(int n=0; a[n]!=’\0’;n++); if (k>m) {b[0]=’\0’;break}; if (k+m>n) l=n-k else l=m; for(int i=0;i } Berilgan satrni teskariga aylantiruvchi funktsiya: reverse(char s[]s) /* reverse string s in place */ int c, i, j for(i = 0, j = strlen(s) - 1; i < j; i++, j--) c = s[i]; s[i] = s[j]; s[j] = c; Keyingi misolimizda T qatorni S qator ohiriga o’lovchi STRCAT(S, T) funktsiyasini ko’rib chiqamiz: strcat(s,t) /* concatenate t to end of s */ char s[], t[]; /* s must be big enough */ int i, j; i = j = 0; while (s[i] != '\0') / *find end of s */ i++; while((s[i++] = t[j++]) != '\0') /*copy t*/ Satrli massivlar funktsiya argumenti sifatida ishlatilganda satrlarning umumiy uzunligi aniq ko’rsatilishi shartdir. Misol tariqasida ihtiyoriy sondagi satrlar massivini alfavit bo’yicha tartiblash funktsiyasidan foydalanilgan dasturni ko’rib chiqamiz : Include Define m 10 Void sort(int n, char a[][m]);