Pada posting sebelumnya, telah dijelaskan tentang cara menggunakan
tipe data array dalam pemrograman C. Salah satu implementasinya antara
lain dalam pembuatan matriks dengan sebuah array 2 dimensi. Operasi
dalam matriks bisa berupa penambahan, pengurangan, perkalian, rotasi,
invers dan sebagainya.
Jika pada penambahan serta pengurangan 2 matriks hanya dilakukan pada
baris dan kolom yang sama, lain halnya dengan operasi perkalian matriks
yang mempunyai kaidah tersendiri. Syaratnya adalah jumlah kolom matriks
pertama harus sama dengan matriks kedua. Hasil dari operasi matriks
tersebut adalah sebuah matriks yang mempunyai jumlah baris yang sama
dengan matriks pertama dan jumlah kolom yang identik dengan matriks
kedua . Contohnya : jika kita mempunyai matriks A dengan ukuran 2×3 dan
matriks B dengan ukuran 3×4, maka hasil perkalian matriks A dengan
matriks B adalah sebuah matriks berdimensi 2×4.
Perhitungan :
C11 = A11.B11 + A12.B21
C12 = A11.B12 + A12.B22
C21 = A21.B11 + A22.B21
C22 = A21.B12 + A22.B22
Implementasinya dalam program C dapat dibuat seperti berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <stdio.h> #define maks 100 main() { int matriks1[maks][maks], matriks2[maks][maks]; int bil, i,j, x, y, a,b; printf("Masukkan ukuran matriks 1 : "); scanf("%d %d",&x, &y); printf("nnMatriks Pertama : n"); for (i=0;i<x;i++){ for (j=0;j<y;j++){ printf("Matriks [%d][%d] : ",i,j); scanf("%d",&matriks1[i][j]); } } printf("nnMasukkan ukuran matriks 2 : "); scanf("%d %d",&a, &b); printf("nnMatriks Kedua : n"); for (i=0;i<a;i++){ for (j=0;j<b;j++){ printf("Matriks [%d][%d] : ",i,j); scanf("%d",&matriks2[i][j]) ; } } //jumlah_matriks(x,matriks1, matriks2); kali_matriks(x,a,b, matriks1, matriks2); getch(); return 0; } int kali_matriks(int x, int y, int z, int matriks_1[maks][maks] , int matriks_2[maks][maks]) { int i, j, k, matriks_3[maks][maks]; printf("nnPerkalian Matriks : n"); for (i=0;i<x;i++){ for (j=0;j<z;j++){ matriks_3[i][j] = 0; for (k=0;k<y;k++) { matriks_3[i][j] += matriks_1[i][k] * matriks_2[k][j]; } printf("%d", matriks_3[i][j]); if (j == (z-1)) printf("n"); else printf(" "); } } } |
makasih gan
ReplyDeletethanks gan
ReplyDelete