Dalam Pascal :
Var
Data:array[1..10] of integer;
Dalam C :
int Data[10];
Kedua perintah tersebut berguna untuk membuat suatu array bernama Data
yang mempunyai 10 buah elemen. Perbedaannya adalah pendeklarasian yang
menggunakan bahasa Pascal adalah pendeklarasian array yang mempunyai index
elemen dari 1 sampai 10, sedangkan pendeklarasian array yang menggunakan bahasa
C membuat array yang selalu dimulai dari index ke-0 sampai 9 yaitu banyakdata-1.
Untuk melihat bagaimana array disimpan dalam memori, asumsikan kita
mempunyai kode program sebagai berikut :
int data[5];
data[0]=5;
data[1]=8;
data[3]=data[0]+data[1];
Catat bahwa pada data[2] dan data[4] berisi nilai yang terdefinisi, itu bukan
berarti tidak terdapat data atau 0, tetapi berisi data yang tidak bisa diperkirakan.
Untuk menghindari kesalahan, lebih baik ketika pembuatan array ada inisialisasi data.
Halaman - 1
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
#include <stdio.h>
#include <conio.h>
#define maks 5
main()
{
int i;
int data[5];
clrscr();
printf("Pemasukan data :\n");
for(i=0;i<maks;i++)
{
printf("Masukan data[%d]: ",i);
scanf("%d",&data[i]);
}
printf("\nData yang telah di masukan adalah :\n");
for(i=0;i<maks;i++)
{
printf("data[%d] ada di alamat %u dengan isi : %i\n",
i,&data[i],data[i]);
}
getch();
return 0;
}
Program 1. Program pengisian dan menampilkan data menggunakan array
Halaman - 2
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
2. Operasi-operasi Array
Pengaksesan data array
Pengaksesan data array dapat dilakukan dengan cara memberikan nama variabel
array tersebut serta indexnya.
Contoh :
Data[0]=5;
Data[1]=7;
Printf(“Data pertama adalah %d \n”,Data[0]);
Cara lain untuk pengaksesan data array dalam bahasa C adalah dengan
menggunakan pointer.
Contoh :
1 int data[5]={1,4,5,6,7};
2 int *p,i; //p adalah pointer ke data int, i adalah sebuah int
3 p=data;
4 i=data[2];
5 *p=50; // identik dengan data[0]=50
6 *(p+1)=15; // identik dengan data[1]=15
7 *(p+2)=*p+data[1]; // identik dengan data[2]=data[2]+data[1];
8 p++; // alamat p ditambah 1 (p berisi alamat int berikutnya)
9 printf(“Isi P adalah : “,*p);// akan muncul data[1] yaitu 50
10 p=p+2; // alamat p ditambah 2(p berisi alamat 2 int berikutnya
11 printf(“Isi P sekarang : “,*p);// akan muncul data[3] yaitu 6
6 50 15 5 6 7 1000 5
7 50 15 65 6 7 1000 5
8 50 15 65 6 7 1002 5
9 Isi P adalah : 50
10 50 15 65 6 7 1006 5
11 Isi P Sekarang : 6
Keterangan : bd = belum dideklarasikan, tdk = memiliki nilai tetapi tidak diketahui
Halaman - 3
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
#include <stdio.h>
#include <conio.h>
#define maks 5
main()
{
int i,*p;
int data[5];
p=data;
clrscr();
printf("Pemasukan data :\n");
for(i=0;i<maks;i++)
{
printf("Masukan data[%d]: ",i);
scanf("%d",p+i);
}
printf("\nData yang telah di masukan adalah :\n");
for(i=0;i<maks;i++)
{
printf("Data[%d] ada di alamat %u dengan isi : %i\n",
i,p+i,*(p+i));
}
getch();
return 0;
}
Kedua perintah di atas sama-sama menampilkan data dalam array. Jika dijalankan
akan menghasilkan tampilan seperti dibawah ini.
Halaman - 4
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
data[0]=1;
data[1]=5;
data[2]=8;
data[3]=9;
data[4]=8;
Karena proses menampilkan data array ini akan sangat banyak dipakai, maka
sebaiknya proses ini dibuat dalam bentuk sebuah fungsi yang memiliki
parameter/argumen berupa array dan banyaknya data. Fungsi tersebut adalah :
Setelah fungsi tersebut dibuat, maka jika ingin menampilkan data array, akan
lebih mudah. Perhatikan contoh di bawah ini.
int a[5]={2,5,6,7,8};
int banyakdata=5;
printf("3 buah Isi A adalah : ");
view_array(a,3); printf("\n");
printf("Seluruh Isi A adalah : ");
view_array(a,banyakdata);
Halaman - 5
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Misalkan ada satu data baru yaitu 7, maka data baru tersebut disimpan di yang
paling akhir, kemudian variabel banyakdata harus ditambah 1.
baru
7
Begitu juga bila ada data baru lagi dengan nilai 80, maka akan ada proses
penyimpanan data di akhir array dan menambah variabel banyakdata akan
bertambah 1 menjadi 5. Sehingga kondisi data di memori dapat digambar seperti
gambar di bawah ini.
Baru
80
Dari gambar di atas, dapat dilihat bahwa array sudah penuh. Jika ada
penambahan lagi, maka data akan disimpan di tempat yang salah. Oleh karena itu
sebaiknya ada pemeriksaan kondisi apakah banyak data sudah mencapai batas
maksimal. Jika belum mencapai data maksimal, maka proses penambahan dapat
dilakukan, dan jika telah mencapai data maksimal, maka proses penambahan data
tidak dapat dilakukan.
Agar lebih bermanfaat, maka lebih baik proses tersebut dibuat menjadi sebuah
fungsi yang mempunyai parameter/argumen berupa array, variabel banyakdata
yang akan berganti nilai ketika proses penambahan telah terjadi dan variabel
baru yang berisi data yang akan disisipkan.
Halaman - 6
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
int a[5];
int bd=0;
tambah_array(a,&bd,3);
tambah_array(a,&bd,5);
view_array(a,bd);// Menampilkan data array A sebanyak bd
Kondisi Awal :
data[0] data[1] data[2] data[3] data[4] banyakdata
3 5 6 - - 3
Jika ada penyisipan data baru dengan nilai yang akan dimasukan adalah 4 dan
ingin disimpan di posisi array ke-2 (urutan 1 jika dalam array bahasa C), maka
data pada posisi 2 dan berikutnya harus bergeser sehingga data-data tersebut
tidak hilang. Jika proses ini telah selesai maka variabel banyakdata akan
bertambah 1 sehingga menjadi 4.
Halaman - 7
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Proses penyisipan data hanya dapat dilakukan jika posisi tempat penyisipan
berada di antara 1 sampai banyakdata (dalam bahasa C harus di antara 0 sampai
banyakdata-1 karena array dalam bahasa C selalu dimulai dari data ke-0).
Halaman - 8
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
int a[5];
int bd=0,baru;
tambah_array(a,&bd,3);
tambah_array(a,&bd,5);
sisip_array(a,&bd,8,2);// sisip nilai 8 di posisi 2
baru=56;
sisip_array(a,&bd,baru,1);//sisip nilai variable baru di posisi 1
sisip_array(a,&bd,88,15);// gagal karena di luar range array
view_array(a,bd);// Menampilkan data array A sebanyak bd
Kondisi Awal :
data[0] data[1] data[2] data[3] data[4] banyakdata
3 5 6 8 - 4
Jika ada penghapusan dilakukan pada posisi 2, maka data posisi 3 akan
dipindahkan ke posisi 2, data di posisi 4 akan dipindahkan ke posisi 3, dan proses
pemindahan data ke posisi sebelumnya dilakukan sampai data terakhir. Setelah
proses ini dilakukan, maka variabel banyakdata akan dikurangi 1 karena ada data
yang dihapus.
Proses penggeseran nilai dilakukan terhadap data dari posisi hapus +1 sampai
posisi banyakdata.
Proses penghapusan data hanya akan bisa terjadi kalau posisi hapus ada dalam
range array (posisi 1 s/d posisi banyakdata). Jika posisi hapus berada di luar
range array yang sudah terisi data, maka proses penghapusan dibatalkan. Jika
array kosong (banyakdata=0) maka proses penghapusan juga tidak bisa
dilakukan (dibatalkan).
Halaman - 9
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Implementasi dari algoritma di atas dapat dilihat pada script program berbahasa
C di bawah ini.
Halaman - 10
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Pencarian data
Pencarian data berarti proses mencari suatu data terdapat dalam array atau tidak.
Proses ini biasanya menghasilkan nilai benar atau salah.
Adapun algoritma-algoritma yang biasa digunakan untuk melakukan proses
pencarian dalam array adalah :
- Algoritma Sekuensial (Sequential Search)
Pencarian sekuensial adalah suatu metode pencarian dengan cara menelusuri
seluruh elemen, biasanya dari data pertama sampai data yang dicari
ditemukan atau sampai data terakhir. Pencarian sekuensial dapat dilakukan
pada array yang terurut atau tidak terurut.
Ada dua jenis pencarian secara sekuensial, yaitu
a. Pencarian sekuensial dengan sentinel
Pencarian ini dilakukan dengan cara menelusuri data yang ada di array
dan membandingkannya dengan data yang dicari sampai data yang dicari
ditemukan. Oleh karena itu, maka untuk mengatasi apabila data yang
dicari tidak ada di array, maka digunakan sentinel yaitu suatu
Pencarian yang menggunakan sentinel selalu dapat menemukan data.
Tetapi sebelum pencarian data, ada proses pengisian sentinel (data
terakhir diisi dengan data yang dicari),
Contoh 1:
Data yang dicari adalah : 7 Untuk Sentinel
Banyak data : 5
Array :
5 8 7 6 9
Sehingga ketika pencarian dengan teknik ini, maka pencarian akan selalu
menemukan data yang dicari. Untuk menentukan kondisi apakah data
tersebut ditemukan atau tidak adalah dengan memeriksa di index ke
berapa data tersebut ditemukan. Jika index data bernilai masih di bawah
atau sama dengan banyak data yang ada di array, maka itu berarti data
ditemukan dan jika index data melebihi dari banyak data yang ada di
array berarti data tidak ditemukan.
Untuk kasus di atas, maka pencarian akan berakhir pada index ke-3,
karena data ada. Tetapi kalau data yang dicari adalah 10, maka array akan
berisi :
5 8 7 6 9 10
Sehingga pencarian akan berakhir pada index ke-6. Karena 6 lebih besar
dari 5 (banyak data), itu berarti data tidak ditemukan.
Halaman - 11
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
int i=0;
data[banyakdata]=dicari;//pengisian sentinel
while(data[i]!=dicari)//selama belum ditemukan
{
i++;
}
if(i<banyakdata)
return i+1;
else
return 0;
}
Halaman - 12
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
int i=0;
int ditemukan=0;// dalam bahasa c, false adalah nilai 0
while((i<banyakdata) // i belum mencapai data terakhir
&& // dan
(ditemukan==0))// data belum ditemukan, maka
{
if(data[i]==dicari)
ditemukan=1;//ditemukan diisi dengan true (1)
else
i++;
}
if(ditemukan==1)
return i+1;
else
return 0;
}
int a[5]={10,22,34,42,55};
int bd=5;
int posisi;
clrscr();
posisi=cari_sekuensial(a,bd,34);
if(posisi!=0)
printf("Data ditemukan di posisis : %d\n",posisi);
else
printf("Data tidak ditemukan\n");
Halaman - 13
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
posisi tengah diisi dengan posisi tengah antara posisi kiri baru dan kanan),
dan jika data yang dicari sama dengan data di posisi tengah, maka berarti data
telah ditemukan. Perulangan dilakukan selama posisi kiri < posisi kanan
(belum berseberangan) dan data belum ditemukan.
Kemudian bandingkan data yang dicari (50) dengan data posisi tengah (10).
Ada 3 kemungkinan yang terjadi, yaitu :
- Jika data posisi tengah > data yang dicari, maka pencarian dilakukan di
array bagian kiri, dengan cara memindahkan kanan ke posisi tengah+1
(kanan=tengah-1) dan posisi tengah dicari kembali dengan rumus
(kiri+kanan)/2.
- Jika data posisi tengah < data yang dicari, maka pencarian dilakukan di
array bagian kanan, dengan cara memindahkan posisi kiri dengan posisi
tengah+1, dan posisi tengah dicari kembali dengan rumus (kiri+kanan)/2.
- Jika data posisi tengah = data yang dicari, berarti data telah ditemukan
pada posisi tengah.
Kiri = 6
Kanan = 10
Tengah = (6+10)/2 = 8 [ambil bilangan bulatnya]
1 4 8 9 10 15 16 25 50 55
Halaman - 14
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Kiri/Tengah Kanan
Kemudian bandingkan data yang dicari (5) dengan data posisi tengah (10),
sehingga didapatkan bahwa data yang dicari lebih kecil dari data posisi
tengah, sehingga pencarian dilakukan pada array bagian kiri. Kondisi
pencariannya :
Kiri=1;
Kanan=Tengah-1 = 5-1 = 4
Tengah=(1+Kanan)/2 = (1+4)/2= 5/2 =2
1 4 8 9 10 15 16 25 50 55
Halaman - 15
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Kiri/Tengah Kanan
Kemudian bandingkan lagi data yang dicari (5) dengan data tengah (8),
didapatkan kondisi bahwa data yang dicari lebih kecil dari data tengah
sehingga pencarian harus dilakukan di posisi kiri sehingga kondisi pencarian
adalah :
Kanan = (Tengah-1) = 3-1 =2
Kiri = 3
Tengah = (Kiri+Kanan) =(2+3)/2 = 5/2 =2
1 4 8 9 10 15 16 25 50 55
Kanan/Tengah Kiri
Berseberangan
Karena posisi kiri telah melebihi posisi kanan, maka pencarian selesai dan itu
menunjukan bahwa data tidak ditemukan.
Halaman - 16
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Pengurutan Data
Pengurutan data berarti proses menyusun data yang ada dalam array sehingga
dapat terurut baik ascending (menaik) atau descending (menurun).
Adapun algoritma-algoritma yang biasa digunakan untuk melakukan proses
pengurutan data dalam array adalah :
- Algoritma Bubble Sort
Algoritma pengurutan dengan menggunakan teknik bubble sort adalah
dengan membandingkan sebuah elemen array ke-i dengan elemen array
berikutnya (elemen ke-i+1). Jika isi elemen array ke-i lebih besar dari elemen
array ke-i+1, maka tukarkan isinya. Algoritma ini adalah algoritma
pengurutan yang paling sederhana, tetapi paling lambat untuk array yang
memiliki elemen yang banyak.
Awal: 5 3 7 9 2 3 6 4 3 1
L. 1 3 5 7 2 3 6 4 3 1 9
L. 2 3 5 2 3 6 4 3 1 7 9
L. 3 3 2 3 5 4 3 1 6 7 9
L. 4 2 3 3 4 3 1 5 6 7 9
L. 5 2 3 3 3 1 4 5 6 7 9
L. 6 2 3 3 1 3 4 5 6 7 9
L. 7 2 3 1 3 3 4 5 6 7 9
L. 8 2 1 3 3 3 4 5 6 7 9
L. 9 1 2 3 3 3 4 5 6 7 9
Catatan : data yang diarsir adalah data yang telah terurut.
Dari gambaran di atas, ketika banyak data adalah 10, maka proses pertukaran
dilakukan sebanyak 9 langkah. Jadi dapat diketahui bahwa langkah yang
dilakukan agar data terurut maksimal sebanyak N-1 langkah dimana N adalah
banyaknya data.
Halaman - 17
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Langkah 1 :
Cari index bilangan terkecil dari data ke-1 sampai data terakhir terakhir untuk
disimpan di posisi ke-1. Dari data di atas didapatkan bahwa data terkecil
berada di index ke-10. Tukarkan isi data ke-1 dengan indek ke 10.
5 3 7 9 2 3 6 4 3 1
Menjadi
1 3 7 9 2 3 6 4 3 5
Langkah ke-2 :
Halaman - 18
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Cari index bilangan terkecil dari data ke-2 sampai data terakhir untuk
disimpan di posisi-2. Dari data sebelumnya didapatkan bahwa data terkecil
berada di index ke-5. Tukarkan isi data ke-2 dengan data index ke-5.
1 3 7 9 2 3 6 4 3 5
Menjadi
1 2 7 9 3 3 6 4 3 5
Langkah ke-3 :
Cari index bilangan terkecil dari data ke-3 sampai data terakhir untuk
disimpan di posisi-3. Dari data sebelumnya didapatkan bahwa data terkecil
berada di index ke-5. Tukarkan isi data ke-3 dengan data index ke-5.
1 2 7 9 3 3 6 4 3 5
Menjadi
1 2 3 9 7 3 6 4 3 5
Halaman - 19
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Algoritma ini lebih baik dari pengurutan dengan algoritma bubble sort,
karena dengan algoritma ini, proses pertukaran elemen hanya terjadi
sebanyak N-1 kali.
Halaman - 20
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Halaman - 21
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
Kiri Kana
n
Pivot
Halaman - 22
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
*b=temp;
}
KOLOM
1 2 3
BARIS 1 N1,1 N1,2 N1,3
2 N2,1 N2,2 N2,3
3 N3,1 N3,2 N3,3
Halaman - 23
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
- Pendeklarasian Matrik
Pendeklarasian sebuah matrik dalam bahasa C adalah :
Tipedata namamatrik[banyakbaris][banyakkolom];
Contoh :
int mat1[3][3]; // matrik bertipe integer dengan kolom 3 dan baris 3.
float mat2[5][2];//matrik bertipe float dengan kolom 5, baris 2
int mat[3][3]={{1,3,5},
{4,2,2},
{3,5,7}};
- Pengisian Matrik
Pembacaan matrik membutuhkan 2 buah perulangan yaitu perulangan untuk
baris dan untuk kolom. Untuk mengisi nilai sebuah elemen matrik, caranya
adalah :
Nama_matrik[baris][kolom] = nilai;
Contoh :
mat[1][1]=7;// data baris ke-1 kolom ke-1 diisi 7
mat[2][1]=5; // data baris ke-2 kolom ke-1 diisi 5
Halaman - 24
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
- Menampilkan Matrik
Menampilkan suatu matrik juga memerlukan 2 buah perulangan yaitu baris
dan kolom. Contoh program/fungsi untuk menampilkan suatu matrik adalah :
int b,k,data[3][3];
baca_matrik(data,3,3);
for(b=0;b<3;b++)
{
for(k=0;k<3;k++)
{
printf("%5d",data[b][k]);
}
printf("\n");//pindah baris setelah 1 baris lengkap
}
Halaman - 25
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
- Operasi-Operasi Matrik
Selain pengisian dan menampilkan matrik, operasi-operasi lain yang dapat
dilakukan terhadap matrik adalah penambahan atau pengurangan matrik,
perkalian matrik, transpose matrik, identifikasi matrik dan lain-lain.
a. Penambahan Matrik
Maksudnya adalah menjumlahkan elemen 2 buah matrik yang
bersesuaian posisinya. Operasi ini menghasilkan matrik baru yang
menampung hasil perhitungan. Secara umum aturan penjumlahan matrik
mempunyai persamaan
Proses di atas harus diulang sesuai dengan banyaknya baris dan kolom.
Sehingga kalau diimplementasikan dalam bahasa C, script programnya
adalah :
int mat1[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int mat2[3][3]={{1,1,1},{2,2,2},{3,3,3}};
int mat3[3][3];
int b,k;
for(b=0;b<3;b++)
{
for(k=0;k<3;k++)
{
mat3[b][k]=mat1[b][k] + mat2[b][k];
}
}
view_matrik(mat3,3,3,);
Jika perintah tersebut ingin dijadikan sebagai fungsi maka akan menjadi
seperti di bawah ini :
void jumlahkan_matrik(int mat1[][maks],int mat2[][maks],
int mat3[][maks],
int baris, int kolom)
{
int b,k;
for(b=0;b<baris;b++)
{
for(k=0;k<kolom;k++)
{
mat3[b][k]=mat1[b][k] + mat2[b][k];
}
}
}
Halaman - 26
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
b. Pengurangan matrik
Maksudnya adalah pengurangan elemen 2 buah matrik yang bersesuaian
posisinya. Operasi ini menghasilkan matrik baru yang menampung hasil
perhitungan. Secara umum aturan pengurangan matrik mempunyai
persamaan
Proses di atas harus diulang sesuai dengan banyaknya baris dan kolom.
Sehingga kalau diimplementasikan dalam bahasa C, script programnya
adalah :
int mat1[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int mat2[3][3]={{1,1,1},{2,2,2},{3,3,3}};
int mat3[3][3];
int b,k;
for(b=0;b<3;b++)
{
for(k=0;k<3;k++)
{
mat3[b][k]=mat1[b][k] - mat2[b][k];
}
}
view_matrik(mat3,3,3,);
Jika perintah tersebut ingin dijadikan sebagai fungsi maka akan menjadi
seperti di bawah ini :
void pengurangan_matrik(int mat1[][maks],int mat2[][maks],
int mat3[][maks],
int baris, int kolom)
{
int b,k;
for(b=0;b<baris;b++)
{
for(k=0;k<kolom;k++)
{
mat3[b][k]=mat1[b][k] + mat2[b][k];
}
}
}
Halaman - 27
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
c. Perkalian Matrik
Perkalian matrik hanya bisa dilakukan jika banyak kolom pada matrik
pertama sama dengan banyak baris pada matrik kedua. Sebagai contoh :
Matrik A mempunyai baris=2, dan kolom=2
Matrik B mempunyai baris=2, dan kolom=4
Maka akan dihasilkan matrik baru (C) dengan baris=2, dan kolom=4.
Matrik A Matrik B
Matrik C
Halaman - 28
]Mata Kuliah : Struktur Data dengan menggunakan pendekatan bahasa C
Oleh : Andri Heryandi, ST
view_matrik(mat3,bm1,km2);
Jika operasi tersebut dijadikan sebagai sebuah fungsi, maka script tersebut
akan berbentuk seperti di bawah ini.
void perkalian_matrik(int mat1[][maks], int bm1, int km1,
int mat2[][maks], int bm2, int km2,
int mat3[][maks], int *bm3, int *km3)
{
int b,k,i;
for(b=0;b<bm1;b++)
{
for(k=0;k<km2;k++)
{
mat3[b][k]=0;
for(i=0;i<km1;i++)
mat3[b][k]=mat3[b][k]+mat1[b][i]*mat2[i][k];
}
}
*bm3=bm1;
*km3=km2;
}
Contoh pemanggilannya :
int baris3,kolom3;
int mat1[maks][maks],mat2[maks][maks],mat3[maks][maks];
baca_matrik(mat1,2,2);
baca_matrik(mat2,2,4);
perkalian_matrik(mat1,2,2,
mat2,2,4,
mat3,&baris3,&kolom3);
view_matrik(mat3,baris3,kolom3);
Halaman - 29