Generic Programming

9 May 2011 at 18:17 (Algoritma & Metode OOP (C++))

Week 10 – Tugas Individu 10 – 0454T

Soal Algoritma dan MOOP

Pertemuan 10

  1. Tulislah program dengan fungsi template untuk mencari dan menampilkan data terbesar dan data terkecil dari sekelompok data yang diinputkan oleh user.
  1. Tulislah program dengan fungsi template untuk membalik urutan data dari berbagai tipe data yang diinputkan oleh user.
  1. Tulislah program dengan class template untuk merepresentasikan obyek matrix yang mempunyai operasi tambah, kurang kali dan transpose matrix.

Jawaban:

  1. Tulislah program dengan fungsi template untuk mencari dan menampilkan data terbesar dan data terkecil dari sekelompok data yang diinputkan oleh user.

Jawaban Programnya:

#include <iostream>

using namespace std;

template <class T>

T GetMax (T x, T y, T z)

{

T resultMax;

resultMax=max(x,y);

resultMax=max(resultMax,z);

return (resultMax);

}

template <class T>

T GetMin (T x, T y, T z)

{

T resultMin;

resultMin=min(x,y);

resultMin=min(resultMin,z);

return (resultMin);

}

int main ()

{

int a, b, c, Mins;

long d, e, f, Maks;

cout << “==============================================”;

cout << “\nProgram mancari nilai Max, Min dengan Template”;

cout << “\n==============================================”;

cout << “\n\nMasukkan 3 bilangan : “;

cout << “\nBilangan ke 1. :”;

cin >> a;

cout << “\nBilangan ke 2. :”;

cin >> b;

cout << “\nBilangan ke 3. :”;

cin >> c;

d=a;e=b;f=c;

Mins=GetMin<int>(a, b, c);

Maks=GetMax<long>(d, e, f);

cout << “\nNilai Minimum :” << Mins << endl;

cout << “\nNilai Maksimum :”<< Maks << endl;

system (“Pause”);

return 0;

}

Jawaban Output Programnya:

  1. Tulislah program dengan fungsi template untuk membalik urutan data dari berbagai tipe data yang diinputkan oleh user.

Jawaban Programnya:

// Pembalik Urutan

#include <iostream>

#include <algorithm>

#include <vector>

using namespace std;

template <class T>

T PembalikUrutan (T a, T b, T c, T d)

{

vector<int> mydata;

vector<int>::iterator it;

// set nilai:

mydata.push_back(a);

mydata.push_back(b);

mydata.push_back(c);

mydata.push_back(d);

reverse(mydata.begin(),mydata.end());//fungsi untuk membalik urutan

// print out hasilnya:

cout << “Hasil pembalikan urutannya: “;

for (it=mydata.begin(); it!=mydata.end(); ++it)

cout << ” ” << *it;

cout << endl;

}

main ()

{

int w, x, y, z;

cout << “=======================================”;

cout << “\nProgram pembalik urutan dengan Template”;

cout << “\n=======================================”;

cout << “\n\nMasukkan 4 bilangan : “;

cout << “\nBilangan ke 1. :”;

cin >> w;

cout << “\nBilangan ke 2. :”;

cin >> x;

cout << “\nBilangan ke 3. :”;

cin >> y;

cout << “\nBilangan ke 4. :”;

cin >> z;

cout << “\n\n”;

PembalikUrutan(w, x, y, z);

cout << “\n”;

system (“Pause”);

return 0;

}

Jawaban Output Programnya:

  1. Tulislah program dengan class template untuk merepresentasikan obyek matrix yang mempunyai operasi tambah, kurang kali dan transpose matrix.

Jawaban Programnya:

#include <iostream>

#include<stdio.h>

#include<conio.h>

#include <iomanip>

#define ROW 3

#define COL 3

using namespace std;

template <class T>

T Matriks (T x[3][3], T y[3][3], T a, T b)

{

int i, j, k;

int z[3][3];

//Operasi Perkalian Matrix

for (i=0;i<3;i++)

{

for (j=0;j<3;j++)

{

z[i][j]=0;

for (k=0;k< 3;k++)

{

z[i][j]+= x[i][k]*y[k][j];

}

}

}

//Menampilkan hasil Perkalian Matrix

cout<<“\nPerkalian Matrix A x Matrix B : \n”;

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

cout<<setw(4)<<z[i][j];

}

cout<<endl;

}

//Operasi Tambah Matrix

for (i=0;i<3;i++)

{

for (j=0;j<3;j++)

{

z[i][j]=0;

for (k=0;k< 3;k++)

{

z[i][j]+= x[i][k]+y[k][j];

}

}

}

//Menampilkan hasil Tambah Matrix

cout<<“\nPenambahan Matrix A + Matrix B : \n”;

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

cout<<setw(4)<<z[i][j];

}

cout<<endl;

}

//Operasi Kurang Matrix

for (i=0;i<3;i++)

{

for (j=0;j<3;j++)

{

z[i][j]=0;

for (k=0;k< 3;k++)

{

z[i][j]+= x[i][k]-y[k][j];

}

}

}

//Menampilkan hasil Kurang Matrix

cout<<“\Pengurangan Matrix A – Matrix B : \n”;

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

cout<<setw(4)<<z[i][j];

}

cout<<endl;

}

cout <<“\nTranspose Matrix A:\n”;

//transpose matrix

for(i=0;i<a;i++)

for(j=i+1;j<b;j++)

{

k=x[i][j];

x[i][j]=x[j][i];

x[j][i]=k;

}

for(i=0;i<a;i++)

{

for(j=0;j<b;j++)

printf(“%d “,x[i][j]);

printf(“\n”);

}

cout <<“\nTranspose Matrix B:\n”;

//transpose matrix

for(i=0;i<a;i++)

for(j=i+1;j<b;j++)

{

k=y[i][j];

y[i][j]=y[j][i];

y[j][i]=k;

}

for(i=0;i<a;i++)

{

for(j=0;j<b;j++)

printf(“%d “,y[i][j]);

printf(“\n”);

}

}

int main()

{

int a[ROW][COL],i,j;

a[0][0] = 1;    a[0][1] = 2;    a[0][2] = 3;

a[1][0] = 4;    a[1][1] = 5;    a[1][2] = 6;

a[2][0] = 7;    a[2][1] = 8;    a[2][2] = 9;

int b[ROW][COL];

b[0][0] = 2;    b[0][1] = 2;    b[0][2] = 3;

b[1][0] = 3;    b[1][1] = 6;    b[1][2] = 6;

b[2][0] = 5;    b[2][1] = 4;    b[2][2] = 9;

cout << “===============================”;

cout << “\nProgram Matrix dengan Template”;

cout << “\n==============================”;

cout << “\nMatrix A : \n”;

for(i=0;i<ROW;i++)

{

for(j=0;j<COL;j++)

printf(“%d “,a[i][j]);

printf(“\n”);

}

cout << “\nMatrix B : \n”;

for(i=0;i<ROW;i++)

{

for(j=0;j<COL;j++)

printf(“%d “,b[i][j]);

printf(“\n”);

}

Matriks(a, b, ROW,COL);

getch();

}

Jawaban Output Programnya:

Save to PDF

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: