logo

C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar bajaruvchi dasturlar yaratish

Yuklangan vaqt:

12.08.2023

Ko'chirishlar soni:

0

Hajmi:

326.78125 KB
“ C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar
bajaruvchi dasturlar yaratish ”
MUNDARIJA
I. BOB. C++tilida matritsalarni e'lon qilish va aniqlash ................................................................................. 4
1.1. C++ dasturi ikki matrisani Qo'shish uchun ............................................................................................ 5
1.2. C++ dasturi ikki matrisani Ayirish uchun ............................................................................................... 7
1.3. C++tilida matritsalarni ko'paytirish ....................................................................................................... 9
II. BOB. A matritsaning determinantini topish uchun C++ dasturi ............................................................. 11
2.1. Matritsaning transpozitsiyasini topish uchun C++ dasturi .................................................................. 13
2.2. C++ dasturi ikkita matritsaning skalyar ko'paytmasini topish ............................................................. 17
2.3. C++ da matritsaning aniqlovchisi ........................................................................................................ 19
III BOB. Bir necha indeksli massivlar .......................................................................................................... 24
XULOSA ...................................................................................................................................................... 27
FOYDALANILGAN ADABIYOTLAR RO`YXATI. ............................................................................................... 28 KIRISH
Mavzuning   dolzarbligi .   C++   -   bu   umumiy   maqsadli   kuchli   dasturlash   tili
bo'lib,   uni   kompyuterda   deyarli   hamma   narsani   qilish   uchun   ishlatishingiz
mumkin.   Ushbu   qo‘llanma   yordamida   siz   C++   tilini   mutaxassisdan   C++   da
o‘qitiladigan dasturlash  asoslaridan  bosqichma-bosqich  o‘rganasiz,  ko‘rsatkichlar,
sinflar,   andozalar   va   boshqalar   kabi   ilg‘or   tushunchalarga
o‘tasiz.   Tugatganingizdan   so'ng,   siz   tilni   yaxshi   tushunasiz   va   AI,   grafika,   o'yin
dasturlash   va   umumiy   dasturiy   injiniring   uchun   mustahkam   poydevorga   ega
bo'lasiz!
C++   dasturlash   tili   C   dasturlash   tiliga   asoslangan.   C   dasturlash   tili   o`z
navbatida   B   va   BCPL   dasturlashgan     tillaridan kelib chiqqan.   BCPL    -   1967 yilda
Martin Richards    tomonidan o`ylab topilgan bo`lib, operatsion tizimlarni yaratish
uchun mo`ljallangan.  Ken Thompson  o`zining  B  tilida  BCPL  ning ko`p xossalarini
yaratishga   harakat   qilgan   va   B   dasturlash   tilida   asosan   operatsion   tizimning
birinchi   variantlarini   yozgan.   BCPL   ham,   B   ham   tipsiz   til   bo`lgan.   Ya`ni
o`zgaruvchilarning   ma`lum   bir   tipi   bo`lmagan   -   har   bir   o`zgaruvchi   kompyuter
xotirasida faqat bir bayt joy egallagan. O`zgaruvchini qanday sifatda ishlatish esa,
ya`ni butun sonmi, haqiqiy sonmi yoki harfmi, dasturchining vazifasi bo`lgan. 
     C++   dan   tashqari   boshqa   ko`p   ob`yektli   dasturlashga   yo`naltirilgan   tillar
mavjud.   C++   esa   gibrid   tildir.   Unda   C   ga   o`xshab   strukturali   dasturlash   yoki
yangicha, ob`yektlar bilan dasturlash mumkin. Yangicha deyishimiz ham nisbiydir.
Ob`yektli dasturlash falsafasi paydo bo`lganiga ham yigirma yildan oshyapti.  C++
funksiya   va   ob`yektlarning   juda   katta   kutubxonasiga   ega.   Ya`ni   C++   tilida
dasturlashni   o`rganish   ikki   qismga   bo`linadi.   Birinchisi   bu   C++   ni   o`zini
o`rganish,   ikkinchisi   esa   C++   ning   standart   kutubxonasidagi   tayyor   ob`ekt-
funksiyalardan foydalanishni o`rganishdir. 
Matritsalar,   shubhasiz,   kompyuter   fanida   juda   muhim   mavzu.   Matritsalar
yordamida   algebraik   tenglamalarning   ildizlarini   topishdan   tortib,   tasvirni   qayta
ishlashda   va   hatto   video   o'yinlarda   tasvirni   keng   manipulyatsiya   qilish   va
2 xususiyatlarni chiqarishga qadar ko'plab hisoblash muammolari hal qilinadi. Ushbu
kurs ishida biz C++ tilida matritsali ma'lumotlar turini qanday amalga oshirishni va
matritsalar ustida oddiy amallarni bajarishni ko'rib chiqamiz.
Kurs   ishining   maqsadi:   C++   dasturlash   tili   yordamida   matritsalar   va
determinatlar   ustida   amallar   bajaruvchi   dasturlar   yaratish   haqida   ma`lumotlar
berish.
Kurs   ishining   vazifalari:   C++   dasturlash   tili   yordamida   matritsalar   va
determinatlar   ustida   amallar   bajaruvchi   dasturlar   yaratish   to‘g‘risidagi
adabiyotlarni   to‘plab,   o‘qib  tahlil     qilish   natijasida   C++   da  massivlar   va   ularning
xossalari   yordamida   massivlarni   qo’shish,   ayirish,   ko’paytirish   amallari   dasturda
qo’llashdan iborat.
3 I. BOB. C++tilida matritsalarni e'lon qilish va aniqlash
Matritsa-bu   elementlar   sifatida   qatorlar   va   ustunlar   bilan   ikki   o'lchovli
massiv.   Matritsaning   eng   ko'p   ishlatiladigan   operatsiyalari   qo'shish,   ayirish   va
ko'paytirishdir.   Matritsani   ko'paytirish   birinchi   matritsaning   satr   elementlarini
ikkinchi matritsaning barcha ustun elementlari bilan ko'paytiradi. Siyrak matritsa-
elementlari   asosan   nolga   teng   bo'lgan   matritsa.   Quyidagi   bo'limda   matritsa
operatsiyalari,   matritsa   turlari,   matritsa   diagonallari,   siyrak   matritsa,   qo'shni
matritsa va uchburchak matritsalar bo'yicha turli xil C++ dasturlari mavjud.
Agar   biron   bir   dasturlash   tilida   bir   o'lchovli   massivlar   bilan   ishlash
tajribangiz bo'lsa, matritsalarni o'rganish oson bo'ladi. Oddiy bir o'lchovli matritsa-
bu har  qanday turdagi  to'rtburchaklar  massivdan  boshqa  narsa  emas  (shuningdek,
ushbu qo'llanmaga tegishli bo'lishi mumkin bo'lgan eng foydali ma'lumotlar turlari
butun sonlar va/yoki butun sonlardir). 
 
Ko'rib   turganingizdek,   a   matrix   faqat   bir   to'g'ri   burchakli   qator   bo'lib,
matritsaning har bir satr faqat oddiy bir o'lchovli qator, ya'ni. Aslida, eng oson yo'li
(va   dumbest   yo'l,   shuningdek!)   qandaydir   tarzda   kompyuterga   shunday   deb
4 o'ylashiga   imkon berishdir n   bir xil o'lchamdagi bir o'lchovli qator matritsani hosil
qilmoqda:
a   3   ni   kodlashning   yuqoridagi   usuli   3   matritsani   ishlayotganda,   agar   siz   kattaroq
qator va ustunlarga ega bo'lgan bir nechta matritsalarda ishlashni istasangiz, tezda
boshqarib   bo'lmaydigan   bo'lib   qoladi.   Bu   aniq   bo'lishi   mumkin   bo'lsa-da,   C/C++
da   matritsalarni   aniqlash   bo'yicha   ko'proq   mavhumlikka   ega   bo'lgan   echim
allaqachon   yuqoridagi   kod   ichida.   Bizga   kerak   bo'lgan   narsa-butun   matritsani
ifodalay oladigan ko'rsatgichga bitta ko'rsatgich:
1.1. C++ dasturi ikki matrisani Qo'shish uchun
Bu   matritsani   qo'shishni   namoyish   qilish   uchun   C++   dasturi.   Dastur   ikkita
matritsani qo'shadi va natijada chiqadigan natijani chop etadi.
5  Dastur ikkita matritsaning satrlari va ustunlari sonini tekshiradi.
 Agar ular teng bo'lmasa, matritsalarni qo'shib bo'lmaydi va dastur chiqadi.
 Boshqa matritsalar ko'chadan foydalanib qo'shiladi.
 Natijada olingan matritsa keyin chop etiladi.
 Chiqish.
Bu yerda C++ dasturining manba kodi ikki matrisler Qo'shish va chiqish 
chop etish. Dastur chiqishi quyida ko'rsatilgan.
1. #include<iostream>
2.   namespace  std ;  
3. int  main  ()
4. {
5.      int  m, n, p, q, i, j, A [5][5] , B [5][5] , C [5][5];
6.      cout   <<   "Enter rows and column of matrix A : ";
7.      cin   >>  m  >>  n ;
8.      cout   <<   "Enter rows and column of matrix B : ";
9.      cin   >>  p  >>  q ;  
10.      if   (( m  !=  p )   &&   ( n  !=  q ))
11.      {
12.          cout   <<   "Matrices cannot be added!";
13.          exit(0);
14.      }
15.      cout   <<   "Enter elements of matrix A : ";
16.      for   ( i  =   0;  i  <  m ;  i ++)
17.          for   ( j  =   0;  j  <  n ;  j ++)
18.              cin   >>  A [ i ][ j ];
19. cout   <<   "Enter elements of matrix B : ";
20.      for   ( i  =   0;  i  <  p ;  i ++)
21.          for   ( j  =   0;  j  <  q ;  j ++)
22.              cin   >>  B [ i ][ j ];
23.      for   ( i  =   0;  i  <  m ;  i ++)
24.          for   ( j  =   0;  j  <  n ;  j ++)
25.             C [ i ][ j ]   =  A [ i ][ j ]   +  B [ i ][ j ];
26.      cout   <<   "Sum of matrices \n ";
27.      for   ( i  =   0;  i  <  m ;  i ++)
28.      {      for   ( j  =   0;  j  <  n ;  j ++)
29.              cout   <<  C [ i ][ j ]   <<   "  ";
30.          cout   <<   " \n ";
31.      }
32.      return   0;
33. }
6 Dasturni Tushuntirish
 Dastlab foydalanuvchidan ikkala matritsaning satrlari va ustunlari sonini kiritish
so'raladi.
 Agar   a   matritsaning   satrlari   va   ustunlari   soni   mos   ravishda   b   matritsaning
satrlari va ustunlari soniga teng bo'lmasa, unda matritsalarni qo'shib bo'lmaydi.
Dastur chiqadi.
 Else agar ular teng bo'lsa, ikkala matritsaning elementlari kiritiladi va qo'shiladi.
 Natijada C matritsasi chop etiladi.
1.2. C++ dasturi ikki matrisani Ayirish uchun
Ushbu   C++   bir   xil   tartibda   ikkita   matritsani   olib   tashlashni   ko'rsatadigan
dastur.   Dastur   matritsalarni   boshlab   beradi,   ikkita   matritsaning   har   bir   mos
elementini   chiqaradi   va   qiymatni   uchinchi   matritsaga   qo'yadi.   Mana   manba   kodi
ning C++ bir xil tartibdagi ikkita matritsani olib tashlashni ko'rsatadigan dastur. C+
+   dasturi   muvaffaqiyatli   tuzilgan   va   Linux   tizimida   ishlaydi.   Dastur   chiqishi
quyida ham ko'rsatilgan .
7 1. /*
2.   * C++ program to demonstrate matrix subtraction
3.   */
4. #include<iostream>
5. using namespace std ;
6.  
7. int  main ()
8. {
9.      int  mat1 [3][3],  mat2 [3][3],  mat3 [3][3];
10.  
11.      /* Initializing Mat1 and Mat2 */
12.      for   (int  i  =   0;  i  <   3;  i ++)
13.      {
14.          for   (int  j  =   0;  j  <   3;  j ++)
15.          {
16.             mat1 [ i ][ j ]   =  i  +   1;
17.             mat2 [ i ][ j ]   =  j  +   1;
18.          }
19.      }
20.  
21.      /* Adding matrices Mat1 and Mat2 */
22.      for   (int  i  =   0;  i  <   3;  i ++)
23.      {
24.          for   (int  j  =   0;  j  <   3;  j ++)
25.          {
26.             mat3 [ i ][ j ]   =  mat2 [ i ][ j ]   -  mat1 [ i ][ j ];
27.          }
28.      }
29.  
30.     cout  <<   "First Matrix : "   <<  endl ;
31.      for   (int  i  =   0;  i  <   3;  i ++)
32.      {
33.          for   (int  j  =   0;  j  <   3;  j ++)
34.          {
35.             cout  <<  mat1 [ i ][ j ]   <<   " \t ";
36.          }
37.         cout  <<  endl ;
38.      }
39.  
40.     cout  <<   "Second Matrix : "   <<  endl ;
41.      for   (int  i  =   0;  i  <   3;  i ++)
42.      {
43.          for   (int  j  =   0;  j  <   3;  j ++)
44.          {
8 45.             cout  <<  mat2 [ i ][ j ]   <<   " \t ";
46.          }
47.         cout  <<  endl ;
48.      }
49.  
50.     cout  <<   "Third Matrix = Second Matrix - First Matrix : "   <<  endl ;
51.      for   (int  i  =   0;  i  <   3;  i ++)
52.      {
53.          for   (int  j  =   0;  j  <   3;  j ++)
54.          {
55.             cout  <<  mat3 [ i ][ j ]   <<   " \t ";
56.          }
57.         cout  <<  endl ;
58.      }
59. }
1.3. C++tilida matritsalarni ko'paytirish
Dastur ikkita matritsani ko'paytiradi va natijani chop etadi.
 Dastur ikkita matritsani oladi va ularni ko'paytiradi.
 Agar a matritsaning ustunlari soni b matritsaning qatorlari soniga teng 
bo'lmasa, matritsalarni qo'shib bo'lmaydi.
 Dastur chiqadi.
 Else ular ko'paytiriladi va natija chop etiladi.
 Chiqish.
1. #include<iostream>
2. using   namespace  std ;  
3. int  main  ()
4. {
5.      int  r1, c1, r2, c2, i, j, k ;
6.      int  A [5][5] , B [5][5] , C [5][5];
7.      cout   <<   "Enter number of rows and columns of matrix A : ";
8.      cin   >>  r1  >>  c1 ;
9 9.      cout   <<   "Enter number of rows and columns of matrix B : ";
10.      cin   >>  r2  >>  c2 ;  
11.      if   ( c1  !=  r2 )
12.      {
13.          cout   <<   "Matrices cannot be multiplied!";
14.          exit(0);
15.      }
16.      cout   <<   "Enter elements of matrix A : ";
17.      for   ( i  =   0;  i  <  r1 ;  i ++)
18.          for   ( j  =   0;  j  <  c1 ;  j ++)
19.              cin   >>  A [ i ][ j ];
20.      cout   <<   "Enter elements of matrix B : ";
21.      for   ( i  =   0;  i  <  r2 ;  i ++)
22.          for   ( j  =   0;  j  <  c2 ;  j ++)
23.              cin   >>  B [ i ][ j ];
24.      for   ( i  =   0;  i  <  r1 ;  i ++)
25.      {
26.          for   ( j  =   0;  j  <  c2 ;  j ++)
27.          {
28.             C [ i ][ j ]   =   0;
29.              for   ( k  =   0;  k  <  r2 ;  k ++)
30.              {
31.                 C [ i ][ j ]   +=  A [ i ][ k ]   *  B [ k ][ j ];
32.              }
33.          }
34.      }
35.      cout   <<   "Product of matrices \n ";
36.      for   ( i  =   0;  i  <  r1 ;  i ++)
37.      {     
38.          for   ( j  =   0;  j  <  c2 ;  j ++)
39.              cout   <<  C [ i ][ j ]   <<   "  ";
40.          cout   <<   " \n ";
41.      }
42.      return   0;
43.   }
Dasturni Tushuntirish
 Foydalanuvchidan   a   va   b   matritsaning   satrlari   va   ustunlari   sonini   kiritish
so'raladi.
 Agar   a   matritsaning   ustunlari   soni   b   matritsaning   qatorlari   soniga   teng
bo'lmasa, matritsalarni ko'paytirish mumkin emas.
 Dastur exit () funksiyasi yordamida chiqariladi.
10  Agar   ular   teng   bo'lsa,   matritsalar   ko'chadan   foydalanib   ko'paytiriladi   va
mahsulot s matritsasida saqlanadi.
 Natijada keyin chop etiladi.
II. BOB. A matritsaning determinantini topish uchun C++ dasturi
Bu   C++   dasturi   muayyan   matritsaning   determinanti   qiymatini   ko'rsatadi.
Determinant-bu   kvadrat   matritsa   bilan   bog'liq   qiymat.   Uni   matritsaning
yozuvlaridan ma'lum bir arifmetik ifoda bilan hisoblash mumkin, uning qiymatini
aniqlashning   boshqa   usullari   ham   mavjud.   Matritsaning   determinantini   hisoblash
uchun C++ dasturining manba kodi. C++ dasturi muvaffaqiyatli tuzilgan va Linux
tizimida ishlaydi. Dastur chiqishi quyida ham ko'rsatilgan.
1. /*
2.   * C++ Program to Find the Determinant of a Given Matrix
3.   */
11 4. #include<iostream>
5. #include<math.h>
6. #include<conio.h>
7.  
8. using   namespace  std ;
9. double  d  =   0;
10. double  det (int  n,  double  mat [10][10]);
11. double  det (int  n,  double  mat [10][10])
12. {
13.      double  submat [10][10];
14.      if   ( n  ==   2)
15. return   (( mat [0][0]   *  mat [1][1])   -   ( mat [1][0]   *  mat [0][1]));
16.      else
17.      {
18.          for   (int  c  =   0;  c  <  n ;  c ++)
19.          {
20.              int  subi  =   0;   //submatrix's i value
21.              for   (int  i  =   1;  i  <  n ;  i ++)
22.              {
23.                  int  subj  =   0;
24.                  for   (int  j  =   0;  j  <  n ;  j ++)
25.                  {
26.                      if   ( j  ==  c )
27.                          continue;
28.                     submat [ subi ][ subj ]   =  mat [ i ][ j ];
29.                      subj ++;
30.                  }
31.                 subi ++;
32.  
33.              }
34.             d  =  d  +   (pow(-1 , c )   *  mat [0][ c ]   *  det ( n  -   1 , submat ));
35.          }
36.      }
37.      return  d ;
38. }
39. int  main (int  argc,  char   ** argv )
40. {
41.  
42.      cout   <<   "Enter the dimension of the matrix: \n ";
43.      int  n ;
44.      cin   >>  n ;
45.      double  mat [10][10];
46.      cout   <<   "Enter the elements of the matrix: \n ";
47.      for   (int  i  =   0;  i  <  n ;  i ++)
12 48.      {
49.          for   (int  j  =   0;  j  <  n ;  j ++)
50.          {
51.              cin   >>  mat [ j ][ i ];
52.          }
53.      }
54.      cout   <<   "The determinant of the given matrix is: "   <<  det ( n, mat );
55. return   0;
56. }
2.1. Matritsaning transpozitsiyasini topish uchun C++ dasturi
Dastur   matritsani   oladi   va   matritsaning   transpozitsiyasini   bosib   chiqaradi.
Transpozitsiya matritsasida qatorlar ustunga aylanadi va aksincha.
 Dastlab   matritsaning   satr   va   ustunlari   soni   kiritiladi,   so'ngra   matritsa
elementlari kiritiladi.
 Matritsaning tranpozasi chop etiladi.
 Chiqish.
Bu erda bir matritsasi Transpose topish uchun C++ dasturi manba kodi. Dastur
chiqishi quyida ko'rsatilgan.
1. #include<iostream>
2.   namespace  std ;
3. int  main  ()
13 4. {
5.      int  A [10][10] , m, n, i, j ;
6.      cout   <<   "Enter rows and columns of matrix : ";
7.      cin   >>  m  >>  n ;
8.      cout   <<   "Enter elements of matrix : ";
9.      for   ( i  =   0;  i  <  m ;  i ++)
10.          for   ( j  =   0;  j  <  n ;  j ++)
11.              cin   >>  A [ i ][ j ];
12.      cout   <<   "Entered Matrix :  \n  ";
13.      for   ( i  =   0;  i  <  m ;  i ++)
14.      {  
15.          for   ( j  =   0;  j  <  n ;  j ++)
16.              cout   <<  A [ i ][ j ]   <<   " ";
17.          cout   <<   " \n  ";
18.      }
19.      cout   <<   "Transpose of Matrix :  \n  ";
20.      for   ( i  =   0;  i  <  n ;  i ++)
21.      {
22.          for   ( j  =   0;  j  <  m ;  j ++)
23.              cout   <<  A [ j ][ i ]   <<   " ";
24.          cout   <<   " \n  ";
25.      }
26.      return   0;
27. }
Dasturni Tushuntirish
 Foydalanuvchidan matritsaning satrlari va ustunlari sonini kiritish so'raladi.
 Matritsaning elementlarini kiritish so'raladi va ' a ' matritsasiga saqlanadi.
 Transpozitsiya satrlarni ustunlar bilan va ustunlarni qatorlar bilan almashtirish
orqali topiladi.
 Asl matritsa va transpozitsiya ikkalasi ham bosilgan.
14 2-usul:
Ushbu   C++   dasturi   har   qanday   tartibdagi   berilgan   matritsaning
transpozitsiyasini hosil qiladi. Bu standart kiritish dan qator hajmini oladi va yangi
yordamida   buning   uchun   xotira   ajratadi[].   Keyin   elementlar   ko'p   o'lchovli
massivda saqlanadi va transpose an'anaviy usul yordamida olinadi. Transpose chop
etiladi   va   xotira   nihoyat   delete   []   yordamida   ajratiladi.   Bu   yerda   C++   dasturi
manba kodi har qanday tartibda berilgan matritsasi bir transpose hosil bo'ladi. C++
15 dasturi muvaffaqiyatli tuzilgan va Linux tizimida ishlaydi. Dastur chiqishi quyida
ham ko'rsatilgan.
1. /*
2.   * C++ Program to Generate a Transpose of a Given Matrix of any order
3.   */
4. #include <iostream>
5.  
6. int  main ()
7. {
8.     std ::cout   <<   "Enter the order of matrix ";
9.      int  x, y ;
10.     std ::cin   >>  x  >>  y ;
11.  
12.      double**  arr  =   new   double*[ x ];
13.      for   (int  i  =   0;  i  <  y ;  i ++)
14.      {
15.         arr [ i ]   =   new   double[ y ];
16.      }
17.      for   (int  i  =   0;  i  <  x ;  i ++)
18.      {
19.          for   (int  j  =   0;  j  <  y ;  j ++)
20.          {
21.             std ::cin   >>  arr [][ j ];
22.          }
23.      }
24.      for(int  i  =   0;  i  <  x ;  i ++)
25.      {
26.          for(int  j  =  i ;  j  <  y ;  j ++)
27.          {
28.              int  temp  =  arr [ i ][ j ];
29.              arr [][ j ]   =  arr [ j ][];
30.             arr [ j ][ i ]   =  temp ;
31.          }
32.      }
33.     std ::cout   <<   "Transpose Matrix"   <<  std ::endl;
34.      for(int  i  =   0;  i  <  x ;  i ++)
35.      {
36.          for(int  j  =   0;  j  <  y ;  j ++)
37.          {
38.             std ::cout   <<  arr [ i ][ j ]   <<   " ";
39.          }
40.         std ::cout   <<   " \n ";
41.      }
16 42.      for(int  i  =   0   ;  i  <  y ;  i ++)
43.      {
44.          delete[]  arr [ i ];
45.      }
46.      delete[]  arr ;
47. }
2.2. C++ dasturi ikkita matritsaning skalyar ko'paytmasini topish
Dastur ikkita matritsani oladi va skalyar ko'paytmani hisoblaydi.
 Dastur ikkita matritsaning hajmini oladi.
 Agar ular teng bo'lmasa, nuqta mahsulotini topib bo'lmaydi va dastur tugaydi.
 Boshqa matritsalarning nuqta mahsuloti hisoblanadi.
 Natijada chop etiladi.
 Chiqish.
1. #include<iostream>
2. using   namespace  std ;
3. int  main  ()
4. {
5.      int  i, j, m, n, p, q ;
6.      int  A [10][10] , B [10][10] , C [10];
7.      cout   <<   "Enter number of rows and columns of matrix A : ";
8.      cin   >>  m  >>  n ;
9.      cout   <<   "Enter number of rows and columns of matrix B : ";
10.      cin   >>  p  >>  q ;
11.      if   (( m  !=  p )   &&   ( n  !=  q ))
12.      {
13.          cout   <<   "Dot product cannot be found as matrices are not of same size!";
14.          exit(0);
15.      }
17 16.      cout   <<   "Enter elements of matrix A : ";
17.      for   ( i  =   0;  i  <  m ;  i ++)
18.          for   ( j  =   0;  j  <  n ;  j ++)
19.              cin   >>  A [ i ][ j ];
20.      cout   <<   "Enter elements of matrix B : ";
21.      for   ( i  =   0;  i  <  m ;  i ++)
22.          for   ( j  =   0;  j  <  n ;  j ++)
23.              cin   >>  B [ i ][ j ];
24.      for   ( i  =   0;  i  <  m ;  i ++)
25.      {
26.         C [ i ]   =   0;
27.          for   ( j  =   0;  j  <  n ;  j ++)
28.             C [ i ]   +=   A [ i ][ j ]   *  B [ i ][ j ];
29.  
30.      }
31.      // Printing matrix A //
32.      cout   <<   "Matrix A :  \n  ";
33.      for   ( i  =   0;  i  <  m ;  i ++)
34.      {
35.          for   ( j  =   0;  j  <  n ;  j ++)
36.              cout   <<  A [ i ][ j ]   <<   " ";
37.          cout   <<   " \n  ";
38.      }
39.  
40.      // Printing matrix B //
41.      cout   <<   "Matrix B :  \n  ";
42.      for   ( i  =   0;  i  <  m ;  i ++)
43.      {
44.          for   ( j  =   0;  j  <  n ;  j ++)
45.              cout   <<  B [ i ][ j ]   <<   " ";
46.          cout   <<   " \n  ";      
47.      }
48.      cout   <<   "Dot product :  \n  ";
49.      for   ( i  =   0;  i  <  m ;  i ++)
50.         cout   <<  C [ i ]   <<   " ";
51.      return   0;
52. }
Dasturni Tushuntirish
 Foydalanuvchidan   ikkita   matritsaning   satrlari   va   ustunlari   sonini   kiritish
so'raladi.
 Agar   mos   keladigan   qatorlar   va   ustunlar   teng   bo'lmasa,   nuqta   mahsulotini
hisoblash mumkin emas. Dastur chiqadi.
18  Boshqa   tomondan,   ikkala   matritsaning   elementlariga   kirish   va   saqlash   talab
qilinadi int 'a' va 'B'massivlari.
 tegishli ustunlari A va B ko'paytirilib qo'shiladi, bu esa beradi nuqta mahsuloti
har bir ustun vektor sifatida yaratilganligi sababli ushbu ustunning.
 Natijada keyin chop etiladi.
2.3. C++ da matritsaning aniqlovchisi
Kvadrat   matritsaning   determinantini   uning   element   qiymatlari   yordamida
hisoblash mumkin. A matritsaning determinantini det(A) deb belgilash mumkin va
uni   geometriyada   matritsa   tomonidan   tasvirlangan   chiziqli   transformatsiyaning
19 masshtablash   omili   deb   atash   mumkin.   C++   da   matritsaning   aniqlovchisi
Matritsaning determinantini faqat kvadrat matritsa uchun birinchi qator kofaktorini
mos   keladigan   kofaktorning   determinantiga   ko'paytirish   va   yakuniy   natija   olish
uchun ularni muqobil belgilar bilan qo'shish orqali hisoblash mumkin.
Matritsaning determinantiga quyidagi misol keltiriladi.
#include <iostream>
#include <math.h>
using   namespace  std ;
int  determinant (   int  matrix [ 10 ][ 10 ],   int  n )   {
int  det  =   0 ;
int  submatrix [ 10 ][ 10 ];
if   ( n  ==   2 )
return   (( matrix [ 0 ][ 0 ]   *  matrix [ 1 ][ 1 ])   -   ( matrix [ 1 ][ 0 ]   *  matrix [ 0 ][ 1 ]));
else   {
for   ( int  x  =   0 ;  x  <  n ;  x ++)   {
int  subi  =   0 ;
for   ( int  i  =   1 ;  i  <  n ;  i ++)   {
int  subj  =   0 ;
for   ( int  j  =   0 ;  j  <  n ;  j ++)   {
if   ( j  ==  x )
continue ;
submatrix [ subi ][ subj ]   =  matrix [ i ][ j ];
subj ++;
}
subi ++;
}
det  =  det  +   ( pow (- 1 ,  x )   *  matrix [ 0 ][ x ]   *  determinant (  submatrix ,  n  -   1   ));}}
return  det ;
}
int  main ()
20   {
int  n ,  i ,  j ;
int  matrix [ 10 ][ 10 ];
cout  <<   "Enter the size of the matrix:\n" ;
cin  >>  n ;
cout  <<   "Enter the elements of the matrix:\n" ;
for   ( i  =   0 ;  i  <  n ;  i ++)
for   ( j  =   0 ;  j  <  n ;  j ++)
cin  >>  matrix [ i ][ j ];
cout << "The entered matrix is:" << endl ;
for   ( i  =   0 ;  i  <  n ;  i ++)  
{
for   ( j  =   0 ;  j  <  n ;  j ++)
cout  <<  matrix [ i ][ j ]   << " " ;
cout << endl ;}
cout << "Determinant of the matrix is " <<  determinant ( matrix ,  n );
return   0 ; 
}
Natija
Enter the size of the matrix: 3
Enter the elements of the matrix:
7 1 3
2 4 1
1 5 1
The entered matrix is:
7 1 3
2 4 1
1 5 1
Determinant of the matrix is 10
21 Yuqoridagi   dasturda   matritsaning   hajmi   va   elementlari   main()   funksiyasida
berilgan.   Keyin   determinant()   funksiyasi   chaqiriladi.   U   ko'rsatilgan   matritsaning
determinantini qaytaradi. Bu quyidagi kod parchasi bilan ko'rsatilgan.
cout  <<   "Enter the size of the matrix:\n" ;
cin  >>  n ;
cout  << "Enter the elements of the matrix:\n" ;
for   ( i  =   0 ;  i  <  n ;  i ++)
for   ( j  =   0 ;  j  <  n ;  j ++)
cin  >>  matrix [ i ][ j ];
cout << "The entered matrix is:" << endl ;
for   ( i  =   0 ;  i  <  n ;  i ++)   {
for   ( j  =   0 ;  j  <  n ;  j ++)
cout  <<  matrix [ i ][ j ]   << " " ;
cout << endl ;
}
cout << "Determinant of the matrix is " <<  determinant ( matrix ,  n );
Determinant()   funksiyasida   matritsaning   o'lchami   2   bo'lsa,   u   holda   determinant
to'g'ridan-to'g'ri hisoblanadi va qiymat qaytariladi. Bu quyidagicha ko'rsatilgan.
if (n == 2)
return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]));
Agar matritsaning o'lchami 2 bo'lmasa, determinant rekursiv tarzda hisoblanadi. X,
i va j sikl o'zgaruvchilari bilan ishlatiladigan 3 ta nested for tsikli mavjud. Ushbu
tsikllar determinantni hisoblash uchun ishlatiladi va determinant() funksiyasi ichki
determinantni   hisoblash   uchun   rekursiv   chaqiriladi   va   keyin   uni   tashqi   qiymat
bilan ko'paytiradi. Bu quyidagi kod parchasi bilan ko'rsatilgan.
22 for   ( int  x  =   0 ;  x  <  n ;  x ++)   {
int  subi  =   0 ;
for   ( int  i  =   1 ;  i  <  n ;  i ++)   {
int  subj  =   0 ;
for   ( int  j  =   0 ;  j  <  n ;  j ++)   {
if   ( j  ==  x )
continue ;
submatrix [ subi ][ subj ]   =  matrix [ i ][ j ];
subj ++;
}
subi ++;
}
det  =  det  +   ( pow (- 1 ,  x )   *  matrix [ 0 ][ x ]   *  determinant (  submatrix ,  n  -   1   ));
}
C++ da matritsaning aniqlovchisi
Matritsaning determinantini faqat kvadrat matritsa uchun birinchi qator kofaktorini
mos   keladigan   kofaktorning   determinantiga   ko'paytirish   va   yakuniy   natija   olish
uchun ularni muqobil belgilar bilan qo'shish orqali hisoblash mumkin.
Avval   matritsani   va   matritsaning   o'lchov   qiymatini   oladigan
determinantOfMatrix(int   mat[N][N],   int   o'lchov)   funksiyasiga   egamiz.   Agar
matritsa faqat 1 o'lchovli bo'lsa, u [0][0] matritsa qiymatini qaytaradi. Ushbu shart
23 asosiy   shart   sifatida   ham   qo'llaniladi,   chunki   biz   har   bir   rekursiv   chaqiruvda
o'lchamlarni kamaytirish bilan matritsamizni rekursiv ravishda takrorlaymiz .
int  determinantOfMatrix ( int  mat [ N ][ N ],   int  dimension ){
int   Det   =   0 ;
if   ( dimension  ==   1 )
return  mat [ 0 ][ 0 ];
Keyin birinchi qatorga qadar kofaktor(int mat[N][N], int temp[N][N], int p, int q,
int   n)   funksiyasiga   uzatiladigan   kofaktorMat[N][N]   ni   e'lon   qilamiz.   o'lchamidan
kichikroqdir.   Matritsaning   determinanti   Det   o'zgaruvchisida   saqlanadi,   har   birida
tsikl   takrorlanishi   uchun   belgilar   almashadi.   Keyinchalik   bu   det   chop   etiladigan
asosiy funktsiyaga qaytariladi .
III BOB. Bir necha indeksli massivlar
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
24 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<n;++) {
c[I]=0;
for(j=0;j<n;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<n;++) 
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];  
  };
}
Massivlar   bir   necha   indeksga   ega   bo'lishlari   mumkin.   C++   kompilyatorlari   eng
kamida   12   ta   indeks   bilan   ishlashlari   mumkin.   Masalan,   matematikadagi   m   x   n
kattalikdagi matritsani ikkita indeksli massiv yordamida berisak bo'ladi. 
int matritsa [4][10];
  Yuqorida   to'rt   satrlik,   10   ustunlik   matritsani   e'lon   qildik.   Bir   indeksli   massivlar
kabi   ko'p   indeksli   massivlarni   initsalizatsiya   ro'yhati   bilan   birga   e'lon   qilish
mumkin. Masalan:
char c[3][4] = { 
{  2,  3,9, 5}, // birinchi satr qiymatlari
25 {-10, 77,5, 1}, // ikkinchi  "       "
{ 90,233,3,-3}  // uchinchi  "       " };  
int m[2][2] = {56,77,8,-3}; // oldin birinchi satrga qiymatlar beriladi,
 // keyin esa ikkinchi satrga
double d[4][3][6] = {2.55, -46,0988}; // birinchi satrning dastlabki ikkita
// elementi qiymat oladi,
// massivning qolgan elementlari esa
// nolga tenglashtiriladi  
Massivning indekslarini funksiyaga bildirish yana muammoligicha qoladi. Albatta,
birinchi   indeksdan   tashqari   qolgan   boshqa   indekslar   kattaligini   funksiya   ichida
berish   ma'noga   egadir.   Lekin   birinchi   indeks   kattaligini   tashqaridan,   qo'shimcha
parametr   sifatida   bersak,   funksiyamiz   chiroyliroq   chiqadi,   turli   kattalikdagi
massivlarni o'lish imkoniga ega bo'ladi.
26 XULOSA
C++   bu   umumiy   maqsadli   kuchli   dasturlash   tili   bo'lib,   uni   kompyuterda
deyarli   hamma   narsani   qilish   uchun   ishlatishingiz   mumkin.   Ushbu   qo‘llanma
yordamida   siz   C++   tilini   mutaxassisdan   C++   da   o‘qitiladigan   dasturlash
asoslaridan   bosqichma-bosqich   o‘rganasiz,   ko‘rsatkichlar,   sinflar,   andozalar   va
boshqalar   kabi   ilg‘or   tushunchalarga   o‘tasiz.   Tugatganingizdan   so'ng,   siz   tilni
yaxshi   tushunasiz   va   AI,   grafika,   o'yin   dasturlash   va   umumiy   dasturiy   injiniring
uchun   mustahkam   poydevorga   ega   bo'lamiz.     Matritsalar,   shubhasiz,   kompyuter
fanida   juda   muhim   mavzu.   Matritsalar   yordamida   algebraik   tenglamalarning
ildizlarini   topishdan   tortib,   tasvirni   qayta   ishlashda   va   hatto   video   o'yinlarda
tasvirni   keng   manipulyatsiya   qilish   va   xususiyatlarni   chiqarishga   qadar   ko'plab
hisoblash   muammolari   hal   qilinadi.   Ushbu   kurs   ishida   biz   C++   tilida   matritsali
ma'lumotlar turini qanday amalga oshirishni  va matritsalar  ustida oddiy amallarni
bajarishni ko'rib chiqamiz.
Matritsa-bu   elementlar   sifatida   qatorlar   va   ustunlar   bilan   ikki   o'lchovli
massiv.   Matritsaning   eng   ko'p   ishlatiladigan   operatsiyalari   qo'shish,   ayirish   va
ko'paytirishdir.   Matritsani   ko'paytirish   birinchi   matritsaning   satr   elementlarini
ikkinchi matritsaning barcha ustun elementlari bilan ko'paytiradi. Siyrak matritsa-
elementlari   asosan   nolga   teng   bo'lgan   matritsa.   Quyidagi   bo'limda   matritsa
operatsiyalari,   matritsa   turlari,   matritsa   diagonallari,   siyrak   matritsa,   qo'shni
matritsa va uchburchak matritsalar bo'yicha turli xil C++ dasturlari mavjud. 
27 FOYDALANILGAN ADABIYOTLAR RO`YXATI.
1. A.A.   Xoidjigitov   ,   Sh.f.Madraximov,   U.E.Adamboyev   “Informatika   va
programmalash ”.O`quv qo`llanma, O`z.MU . 2005-yil.
2. B. Straustrop. “Yazik programmirovaniya C++. ”   Binom press , 2006-yil.
3. Qobulov “C++ tili “Toshkent nash. 2008-yil.
4. Madraximov. F “C++ dasturlash tili” uslubiy qo`llanma. 2009-yil.
5. Sayfiyev J.F “C++ tiliga kirish”-uslubiy qo`llanma.Buxoro-2005.
6. http.//www.dastur.uz
7. Жесс   Либерти,   “Освой     самостоятельно     С++   за   21   день”,   Санкт
Петербург 2000, 815 с. 
8. Либерти   Д.   Освой   самостоятельно   С++:   10   минут   на   урок.   Пер   с   англ.
Вильямс, 374 стр,2004 г. 
9. Шмидский Я.К. Прораммирование на языке С++: Самоучитель. 
10. Учебное пособие. Диалектика. 361 стр, 2004 г. 
11. Киммел  П., « Borland   C ++5» .   СПб.:  BHV , 1997г. 
12. Sayfiyev J. F., «С++  tiliga kirish», Buxoro 2004 y. 
13. Nazirov   Sh.   A.,   Qobulov   R.   V.,   «Ob’yektga   mo`ljallangan   dasturlash»,
Toshkent 2006 y. 
14. Boltayev Sh. J., Elov B. B., «Zmonaviy dasturlash tillari», Buxoro    2004 y. 
15. Elov B. E., Boltayev Sh. J., «Dasturlash texnologiyalari», Toshkent - 2002 y. 
INTERNET SAYTLAR.
1. https://www.sparknotes.com/cs/c-plus-plus-fundamentals/
pointersandbasicstructures/summary/
2. https://favtutor.com/blogs/recursion-cpp
3. https://uzbekdevs.uz/darsliklar/cpp/cpp-da-funksiya
4. https://www.cprogramming.com/
28 29

“ C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar bajaruvchi dasturlar yaratish ” MUNDARIJA I. BOB. C++tilida matritsalarni e'lon qilish va aniqlash ................................................................................. 4 1.1. C++ dasturi ikki matrisani Qo'shish uchun ............................................................................................ 5 1.2. C++ dasturi ikki matrisani Ayirish uchun ............................................................................................... 7 1.3. C++tilida matritsalarni ko'paytirish ....................................................................................................... 9 II. BOB. A matritsaning determinantini topish uchun C++ dasturi ............................................................. 11 2.1. Matritsaning transpozitsiyasini topish uchun C++ dasturi .................................................................. 13 2.2. C++ dasturi ikkita matritsaning skalyar ko'paytmasini topish ............................................................. 17 2.3. C++ da matritsaning aniqlovchisi ........................................................................................................ 19 III BOB. Bir necha indeksli massivlar .......................................................................................................... 24 XULOSA ...................................................................................................................................................... 27 FOYDALANILGAN ADABIYOTLAR RO`YXATI. ............................................................................................... 28

KIRISH Mavzuning dolzarbligi . C++ - bu umumiy maqsadli kuchli dasturlash tili bo'lib, uni kompyuterda deyarli hamma narsani qilish uchun ishlatishingiz mumkin. Ushbu qo‘llanma yordamida siz C++ tilini mutaxassisdan C++ da o‘qitiladigan dasturlash asoslaridan bosqichma-bosqich o‘rganasiz, ko‘rsatkichlar, sinflar, andozalar va boshqalar kabi ilg‘or tushunchalarga o‘tasiz. Tugatganingizdan so'ng, siz tilni yaxshi tushunasiz va AI, grafika, o'yin dasturlash va umumiy dasturiy injiniring uchun mustahkam poydevorga ega bo'lasiz! C++ dasturlash tili C dasturlash tiliga asoslangan. C dasturlash tili o`z navbatida B va BCPL dasturlashgan tillaridan kelib chiqqan. BCPL - 1967 yilda Martin Richards tomonidan o`ylab topilgan bo`lib, operatsion tizimlarni yaratish uchun mo`ljallangan. Ken Thompson o`zining B tilida BCPL ning ko`p xossalarini yaratishga harakat qilgan va B dasturlash tilida asosan operatsion tizimning birinchi variantlarini yozgan. BCPL ham, B ham tipsiz til bo`lgan. Ya`ni o`zgaruvchilarning ma`lum bir tipi bo`lmagan - har bir o`zgaruvchi kompyuter xotirasida faqat bir bayt joy egallagan. O`zgaruvchini qanday sifatda ishlatish esa, ya`ni butun sonmi, haqiqiy sonmi yoki harfmi, dasturchining vazifasi bo`lgan. C++ dan tashqari boshqa ko`p ob`yektli dasturlashga yo`naltirilgan tillar mavjud. C++ esa gibrid tildir. Unda C ga o`xshab strukturali dasturlash yoki yangicha, ob`yektlar bilan dasturlash mumkin. Yangicha deyishimiz ham nisbiydir. Ob`yektli dasturlash falsafasi paydo bo`lganiga ham yigirma yildan oshyapti. C++ funksiya va ob`yektlarning juda katta kutubxonasiga ega. Ya`ni C++ tilida dasturlashni o`rganish ikki qismga bo`linadi. Birinchisi bu C++ ni o`zini o`rganish, ikkinchisi esa C++ ning standart kutubxonasidagi tayyor ob`ekt- funksiyalardan foydalanishni o`rganishdir. Matritsalar, shubhasiz, kompyuter fanida juda muhim mavzu. Matritsalar yordamida algebraik tenglamalarning ildizlarini topishdan tortib, tasvirni qayta ishlashda va hatto video o'yinlarda tasvirni keng manipulyatsiya qilish va 2

xususiyatlarni chiqarishga qadar ko'plab hisoblash muammolari hal qilinadi. Ushbu kurs ishida biz C++ tilida matritsali ma'lumotlar turini qanday amalga oshirishni va matritsalar ustida oddiy amallarni bajarishni ko'rib chiqamiz. Kurs ishining maqsadi: C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar bajaruvchi dasturlar yaratish haqida ma`lumotlar berish. Kurs ishining vazifalari: C++ dasturlash tili yordamida matritsalar va determinatlar ustida amallar bajaruvchi dasturlar yaratish to‘g‘risidagi adabiyotlarni to‘plab, o‘qib tahlil qilish natijasida C++ da massivlar va ularning xossalari yordamida massivlarni qo’shish, ayirish, ko’paytirish amallari dasturda qo’llashdan iborat. 3

I. BOB. C++tilida matritsalarni e'lon qilish va aniqlash Matritsa-bu elementlar sifatida qatorlar va ustunlar bilan ikki o'lchovli massiv. Matritsaning eng ko'p ishlatiladigan operatsiyalari qo'shish, ayirish va ko'paytirishdir. Matritsani ko'paytirish birinchi matritsaning satr elementlarini ikkinchi matritsaning barcha ustun elementlari bilan ko'paytiradi. Siyrak matritsa- elementlari asosan nolga teng bo'lgan matritsa. Quyidagi bo'limda matritsa operatsiyalari, matritsa turlari, matritsa diagonallari, siyrak matritsa, qo'shni matritsa va uchburchak matritsalar bo'yicha turli xil C++ dasturlari mavjud. Agar biron bir dasturlash tilida bir o'lchovli massivlar bilan ishlash tajribangiz bo'lsa, matritsalarni o'rganish oson bo'ladi. Oddiy bir o'lchovli matritsa- bu har qanday turdagi to'rtburchaklar massivdan boshqa narsa emas (shuningdek, ushbu qo'llanmaga tegishli bo'lishi mumkin bo'lgan eng foydali ma'lumotlar turlari butun sonlar va/yoki butun sonlardir). Ko'rib turganingizdek, a matrix faqat bir to'g'ri burchakli qator bo'lib, matritsaning har bir satr faqat oddiy bir o'lchovli qator, ya'ni. Aslida, eng oson yo'li (va dumbest yo'l, shuningdek!) qandaydir tarzda kompyuterga shunday deb 4

o'ylashiga imkon berishdir n bir xil o'lchamdagi bir o'lchovli qator matritsani hosil qilmoqda: a 3 ni kodlashning yuqoridagi usuli 3 matritsani ishlayotganda, agar siz kattaroq qator va ustunlarga ega bo'lgan bir nechta matritsalarda ishlashni istasangiz, tezda boshqarib bo'lmaydigan bo'lib qoladi. Bu aniq bo'lishi mumkin bo'lsa-da, C/C++ da matritsalarni aniqlash bo'yicha ko'proq mavhumlikka ega bo'lgan echim allaqachon yuqoridagi kod ichida. Bizga kerak bo'lgan narsa-butun matritsani ifodalay oladigan ko'rsatgichga bitta ko'rsatgich: 1.1. C++ dasturi ikki matrisani Qo'shish uchun Bu matritsani qo'shishni namoyish qilish uchun C++ dasturi. Dastur ikkita matritsani qo'shadi va natijada chiqadigan natijani chop etadi. 5