Home > C, Code, Programming > Contoh Program Perhitungan Matriks dengan C++

Contoh Program Perhitungan Matriks dengan C++

Beberapa kali saya sudah pernah menjadi asisten laboratorium untuk praktikum Arsikom (Arsitektur Komputer) di kampus saya. Suatu ketika saya baca2 modul praktikum, ternyata ada bagian yang tidak terbaca oleh saya. Pada versi modul yang saya punya ada pada “Modul 2 – Pointer dan Array” di paragraf terakhir pada modul tersebut (di punya saya halaman 18), disana tertulis:

/*
Jika anda menyukai tantangan, walaupun praktikum ini fokusnya pada C dan bukan C++, anda boleh membuat matriks sebagai objek di C++ dan meng-overload operator +, -, *, dan / pada objek tersebut untuk menggantikan fungsi-fungsi di atas.🙂
*/


Mungkin karena waktu saya jadi praktikan bagian ini tak terbaca, pas saya jadi asisten pun bagian ini tidak pernah saya singgung ke praktikan. Lagipula tidak ada praktikan yang mencoba hal tersebut atau mungkin kebetulan tidak dikumpulkan pada laporan mereka. Berhubung saya belum pernah mencobanya, langsung coba membuat programnya, dan berikut source code nya:

#include <iostream>
using namespace std;

class Matriks {
	int row;
	int col;
	int** matriks;
	//int* space;
  public:
	Matriks() { row = 0; col = 0; matriks = 0; /*space = 0;*/ };
	Matriks(int, int);
	//~Matriks();
	void set(int, int, int);
	void show();
	void del();
	Matriks operator+ (Matriks);
	Matriks operator- (Matriks);
	Matriks operator* (Matriks);
};

Matriks::Matriks(int m, int n) {
	row = m;
	col = n;
	matriks = new int*[m];
	int* space = new int[m*n];
	int i,j;
	for (i=0;i<m;i++) {
		matriks[i] = space + (i*n);
		for (j=0;j<n;j++) {
			matriks[i][j] = 0;
		}
	}
}
/*
Matriks::~Matriks() {
	delete[] matriks;
	delete[] space;
}
*/
void Matriks::set(int m, int n, int value) {
	matriks[m][n] = value;
}

void Matriks::show() {
	int i,j;
	for (i=0;i<row;i++) {
		cout << "[";
		for (j=0;j<col;j++) {
			cout << matriks[i][j] << "\t";
		}
		cout << "]" << endl;
	}
}

void Matriks::del() {
	delete[] matriks;
	//delete[] space;
}

Matriks Matriks::operator+ (Matriks mat) {
	int i,j;
	Matriks temp(row,col);
	for (i=0;i<row;i++) {
		for (j=0;j<col;j++) {
			temp.matriks[i][j] = matriks[i][j] + mat.matriks[i][j];
		}
	}
	return temp;
}

Matriks Matriks::operator- (Matriks mat) {
	int i,j;
	Matriks temp(row,col);
	for (i=0;i<row;i++) {
		for (j=0;j<col;j++) {
			temp.matriks[i][j] = matriks[i][j] - mat.matriks[i][j];
		}
	}
	return temp;
}

Matriks Matriks::operator* (Matriks mat) {
	int i,j,k;
	Matriks temp(row,mat.col);
	for (i=0;i<row;i++) {
		for (j=0;j<mat.col;j++) {
			for (k=0;k<col;k++) {
				temp.matriks[i][j] = temp.matriks[i][j] + (matriks[i][k] * mat.matriks[k][j]);
			}
		}
	}
	return temp;
}

int main() {
	int i,j;
	Matriks mat1(3,3), mat2(3,3), mat3, mat4, mat5;
	for (i=0;i<3;i++) {
		for (j=0;j<3;j++) {
			mat1.set(i,j,(i+1)*(j+1));
			mat2.set(i,j,(i+1)*(j+1)*2);
		}
	}
	//Menampilkan matriks 1 and matriks 2
	mat1.show(); cout << endl;
	mat2.show(); cout << endl;
	//Simulasi penjumlahan matriks
	mat3 = mat1 + mat2;
	cout << "*** Penjumlahan (Mat1+Mat2) ***" << endl; mat3.show(); cout << endl;
	//Simulasi pengurangan matriks
	mat4 = mat2 - mat1;
	cout << "*** Pengurangan (Mat2-Mat1) ***" << endl; mat4.show(); cout << endl;
	//Simulasi perkalian matriks
	mat5 = mat1 * mat2;
	cout << "*** Perkalian (Mat1*Mat2) ***" << endl; mat5.show();
	return 0;
}

Setelah nulis source code di atas saya ngerasa puas sampe akhirnya saya baca lagi paragraf yang saya quote sebelumnya ada kata2 “dan / pada objek”. Wew pembagian matriks, berarti mesti bikin fungsi invers donk, pikir saya. Tapi karena emang di modul sebenernya cuman menekankan perkalian matriks yasudah pembagian matriks menyusul kapan2 dulu kali ya. Semoga bermanfaat😀

Categories: C, Code, Programming
  1. October 25, 2012 at 12:35 pm

    hahaha emang kalo ga ada tuntutan harus itu ga harus dilakuin😀

    • October 25, 2012 at 9:25 pm

      emang kalo gak wajib males juga ngelakuinnya

  2. October 25, 2012 at 12:35 pm

    bro ceritain pengalaman s2nya donk :p

    • October 25, 2012 at 9:26 pm

      S2 mirip banget kayak S1, jadi yang pengen merasakan jadi mahasiswa lagi, ya nyobain S2 aja

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: