Week 2 – Tugas Individu 2 – 0284M

10 May 2011 at 18:13 (Algoritma & Metode OOP (C++))

Minggu 02 – Dasar-dasar Jaringan 1

Pertemuan 2 – Review Questions

  1. Differentiate between a digital signal and analog signal.
  2. What are the important characteristics of a periodic signal?
  3. Why is digital technology often preferred over analog technology?
  4. Describe the various methods of multiplexing.
  5. Compare media types such as twisted copper wire, coaxial cable and fiber optic cables.
  6. Describe the different types of wireless telephony systems
  7. Show how technologies such as PCM, AM, FM, FDM and TDM are combined together to make a Digital Cellular system possible.
  8. Describe digital subscriber line technology.
  9. What is the “last mile problem?” Describe some of the solutions discussed in this chapter.
  10. Differentiate between a local area network and a wide area network.
  11. What is Ethernet? How is CSMA/CD related to Ethernet?
  12. Describe some of the wireless technologies used in wireless LANs

Jawaban Dosen:

1. Differentiate between a digital signal and analog signal.
Sinyal analog berbentuk gelomban sinus dan bersifat continue, sehingga ada frequency, amplitudo dan phase nya (ini digunakan untuk menjawab no 2). sedangkan sinyal digital bersifat non kontinyu atau berubah dari satu sinyal ke sinyal yang lain secara tiba-tiba, karena sinyal ini melambangkan binary digit (bit) 1 dan 0

2. What are the important characteristics of a periodic signal?
Karakteristik utama dari sinyal periodik (sinus) adalah frekuensi, amplitudo dan phase. karakteristik inilah yang digunakan untuk ‘membawa’ data dengan cara modulasi dan multiplexing, dengan memanipulasi frequency nya (FM), amplitudo (AM) dan fase nya (PCM), dan efisiensi pengiriman dengan cara multiplexing yaitu menggabungkan beberapa sinyal itu dalam satu media.

3. Why is digital technology often preferred over analog technology?
Digital teknologi lebih banyak digunakan karena sinyal ini lebih efisien karena komputer menggunakan sinyal ini, sehingga pengiriman akan lebih cepat dan lebih besar kapasitas nya. Dalam pengiriman data pun, kita tidak perlu melakukan konversi, misalnya menggunakan modem lagi karena tidak ada perubahan sinyal analog ke digital dan sebaliknya.

4. Describe the various methods of multiplexing.
Multiplexing adalah teknik menggabungkan beberapa sinyal supaya data yang dibawa bisa lebih banyak, metode nya yang paling terkenal adalah Time Division Multiplexing dan Frequency Division Multiplexing.

5. Compare media types such as twisted copper wire, coaxial cable and fiber optic cables.
Dalam komunikasi data, media yang biasa digunakan adalah kabel, jenis kabel secara umum adalah copper/tembaga (menggunakan sinyal listrik) dan fibre optic (menggunakan sinyal cahaya). Copper dibagi menjadi coax dan twisted pair, twisted pair dibagi menjadi Unshielded dan shielded (UTP dan STP), sedangkan FO dibagi menjadi multimode dan single mode. Perbedaan yang paling utama adalah dalam membawa data menggunakan sinyal listrik dan cahaya/led/laser, dan kapasitas data yang dibawa tergantung dari tipe kabel, FO lebih besar kapasitas nya, bisa sampai >10Gbps

6. Describe the different types of wireless telephony systems
Wireless telephony system yang umum digunakan mulai dari teknologi awal adalah AMPS -> D-AMPS -> CDMA, kemudian teknologi GSM. Untuk perbedaan secara luas jangkauan, maka wireless telephony bisa mulai dari bluetooth connection (Personal Communication System), Local Area Network – wireless phone dan WiFi menggunakan 2.4 Ghz, sampai ke Wide Area Network, seperti GSM dan CDMA

7. Show how technologies such as PCM, AM, FM, FDM and TDM are combined together to make a Digital Cellular system possible.
Di sini ada 2 teknologi yaitu Modulation dan Multiplexing, seperti saya sudah jelaskan di atas, mengenai teknologi ini, maka kombinasi teknologi ini akan membantu efisiensi pengiriman dan menambah kapasitas pengiriman data, atau yang biasa kita sebut broadband wireless system, seperti HSDPA, HSUPA, dll

8. Describe digital subscriber line technology.
Digital Subcriber Line adalah penggunaan teknologi atau sinyal digital pada infrastruktur kabel telepon biasa (2 wire), kita bisa menemukan teknologi ini pada Telkom Speedy, yaitu menggunakan Modem ADSL – sebenarnya kurang tepat menggunakan istilah modem, karena kita tahu bahwa xDSL adalah sinyal digital, jadi tidak perlu pakai Modem lagi :), tapi bahasa awam biasa menyebut hal ini. Yang tepat adalah menggunakan alat CSU/DSU atau Channel Service Unit dan Digital Service Unit

9. What is the “last mile problem?” Describe some of the solutions discussed in this chapter.
Last mile problem, banyak yang tidak tahu istilah ini. Last Mile adalah istilah yang digunakan untuk menunjukkan jalur akses klien ke jaringan/Internet. Yang menjadi masalah adalah, sulitnya akses ke jaringan terutama ke Internet karena keterbatasan infrastruktur telekomunikasi. Tapi dengan adanya wireless broadband seperti 3G modem dll, maka sepanjang ada sinyal GSM atau CDMA maka bisa digunakan untuk akses ke jaringan Internet. Tapi untuk beberapa tempat masih sulit dijangkau karena terpencil atau belum disediakan oleh provider

10. Differentiate between a local area network and a wide area network.
LAN bersifat terbatas, tidak terlalu jauh jangkauannya, radius 200 m, teknologi nya menggunakan Ethernet, kecepatannya bisa sampai 10Gbps atau lebih.
WAN sifatnya lebih luas, jangkauannya bisa seluruh dunia, dulu memang kecepatannya terbatas, tapi sekarang dengan teknologi yang semakin maju kecepatan WAN sudah mendekati atau bisa dikatakan sama dengan LAN, misalnya WAN bisa sampai >300 Mbps, misalnya WiMax atau 4G

11. What is Ethernet? How is CSMA/CD related to Ethernet?
Ethernet adalah teknologi jaringan lokal (LAN) yang digunakan untuk komunikasi data di LAN. CSMA/CD adalah metode akses yang digunakan pada Ethernet, yaitu penggunaan jalur yang sama secara bersama, sehingga kemungkinan terjadi collision bisa saja terjadi, tapi ada mekanisme untuk menghindari collision tersebut dengan teknik Collision Detection, yaitu jika ada collision data, maka perangkat akan otomatis mengirimkan data dari beberapa source secara random. silakan melihat di materi kuliah, di sana ada penggambaran mengenai CSMA/CD

12. Describe some of the wireless technologies used in wireless LANs
Wireless LAN yang biasa digunakan adalah Frequency Hoping Spread Spectrum dan Direct Sequence Spread Spectrum.
Frequency Hoping digunakan untuk menghindari bentrok frekuensi jika ada beberapa sumber yang menggunakan frekuensi yang sama, dengan cara berpindah-pindah frequency atau channel. Teknik ini harganya mahal karena alatnya khusus, yang lumrah digunakan adalah Direct Sequence, yaitu dengan menggunakan satu channel yang sama untuk penerima dan pengirim data.

Save to PDF

Permalink Leave a Comment

Minggu 07 – Class dan Objek Lanjutan

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

Week 7 – Tugas Kelompok 4 – 0454T

Soal Algoritma dan MOOP

Pertemuan 7 (Tugas kelompok ke-4)

 

  1. Sebuah polynomial seperti :  F(x) = 7.4x5 + 3.1x2 – 10.2x + 15  Dapat direpresentasikan dengan sebuah array dengan setiap elemennya didefinisikan sebagai polynomial yang mempunyai data koefisien dan derajat (degree). Buatlah class polynomial dengan definisi ini dan juga class mempunyai operasi penambahan, pengurangan, perkalian polynomial sehingga hasilnya adalah polynomial baru. Disamping itu juga terdapat fungsi anggota untuk mencari nilai polynomial jika diinputkan harga x.
  1. Buatlah deklarasi kelas dan definisi fungsi dari suatu object Rational Number yang mempunyai data numerator dan denumerator. Buatlah fungsi dan operator yang sesuai agar program yang menggunakan class Rational di bawah dapat dieksekusi dengan benar.

void main() {

Rational A, B, C(2, 7);

cin >> A;    //operator untuk mengimputkan data object A

B = A + C;   //operator penjumlahan pada object Rational

A.Tampil();  //fungsi untuk menampilkan data object A

B.Tampil();

C.Tampil();

}

  1. Sebuah bilangan komplek k dapat ditulis dalam bentuk k = a + bi, dimana a dan b adalah bilangan real dan i adalah bilangan imajiner sehingga i*i = -1. Bilangan a biasanya disebut bagian real dan bilangan b merupakan bagian imajiner dari bilangan k. Buatlah kelas Komplek sehingga kelas tersebut dapat digunakan untuk bekerja dengan bilangan komplek, Diharapkan main program (program utama) dapat menggunakan kelas tersebut sebagai berikut:

void main(){

Complex A(2,3);

Complex B, C;

Cout << “inputkan bilangan komplek: “; Cin >> B;

C = B + A;     //operator penjumlahan

cout << “Bil komplek I: ” << C;  //friend operator <<

C = B – A;     //operator pengurangan

cout << “Bil komplek II: ” << C;

if (A == B)    //operator perbandingan

cout << “Bilangan komplek A dan B sama”;

C = A * B;     //operator perkalian bil komplek

C = A * 2.5;   //operator perkalian dengan bil real

}

Jawaban

 

  1. Sebuah polynomial seperti :  F(x) = 7.4x5 + 3.1x2 – 10.2x + 15  Dapat direpresentasikan dengan sebuah array dengan setiap elemennya didefinisikan sebagai polynomial yang mempunyai data koefisien dan derajat (degree). Buatlah class polynomial dengan definisi ini dan juga class mempunyai operasi penambahan, pengurangan, perkalian polynomial sehingga hasilnya adalah polynomial baru. Disamping itu juga terdapat fungsi anggota untuk mencari nilai polynomial jika diinputkan harga x.

Jawaban Programnya:

#include <iostream>

#include <iomanip>

using namespace std;

class Polynomial

{

public:

Polynomial ();

Polynomial (const Polynomial &);

Polynomial (short nTerms);

~Polynomial ();

const Polynomial & operator= (const Polynomial &);

const Polynomial operator+ (const Polynomial &) const;

const Polynomial operator+ (double) const;

friend const Polynomial operator+ (double, const Polynomial &);

const Polynomial operator- (const Polynomial &) const;

const Polynomial operator- (double) const;

friend const Polynomial operator- (double, const Polynomial &);

const Polynomial operator* (const Polynomial &) const;

const Polynomial operator* (double) const;

friend const Polynomial operator* (double, const Polynomial &);

double setTerm (short term, double coefficient);

double getTerm (short term) const;

double evaluate (double x) const;

friend ostream & operator<< (ostream &, const Polynomial &);

private:

short mnTerms;

double *mpCoefficients;

};

int main ()

{

Polynomial tmp1;

Polynomial tmp2;

tmp1.setTerm(1,1);

tmp1.setTerm(0,2);

tmp2.setTerm(5,2);

tmp2.setTerm(2,1);

tmp2.setTerm(1,2);

tmp2.setTerm(0,4);

cout << endl;

cout << tmp1 << ” + ” << tmp2 << endl;

cout << tmp1+tmp2 << endl;

cout << endl;

cout << tmp1 << ” + ” << 10 << endl;

cout << tmp1+10 << endl;

cout << endl;

cout << 10 << ” + ” << tmp1 << endl;

cout << 10+tmp1 << endl;

cout << endl;

cout << tmp1 << ” – ” << tmp2 << endl;

cout << tmp1-tmp2 << endl;

cout << endl;

cout << tmp1 << ” – ” << 10 << endl;

cout << tmp1-10 << endl;

cout << endl;

cout << 10 << ” – ” << tmp1 << endl;

cout << 10-tmp1 << endl;

cout << endl;

cout << tmp1 << ” X ” << tmp2 << endl;

cout << tmp1*tmp2 << endl;

cout << endl;

cout << tmp2 << ” X ” << -2 << endl;

cout << tmp2*-2 << endl;

cout << endl;

cout << 3 << ” X ” << tmp2 << endl;

cout << 3*tmp2 << endl;

cout << endl;

cout << tmp2 << ” Dimana x adalah ” << 2 << endl;

cout << tmp2.evaluate(2) << endl;

cout << endl;

return 0;

}

  1. Buatlah deklarasi kelas dan definisi fungsi dari suatu object Rational Number yang mempunyai data numerator dan denumerator. Buatlah fungsi dan operator yang sesuai agar program yang menggunakan class Rational di bawah dapat dieksekusi dengan benar.

void main() {

Rational A, B, C(2, 7);

cin >> A;    //operator untuk mengimputkan data object A

B = A + C;   //operator penjumlahan pada object Rational

A.Tampil();  //fungsi untuk menampilkan data object A

B.Tampil();

C.Tampil();

}

Jawaban Programnya:

#include<stdio.h>

#include<iostream>

#include<conio.h>

using namespace std;

class rational

{

int numer;

int denom;

public:

void getdata()

{

cout<<“\n Input numerator no rational: “;

cin>>numer;

cout<<“\n Input denumerator no rational: “;

cin>>denom;

}

void operator+(rational);

};

void rational ::operator+(rational c1)

{

rational temp;

temp.numer=(numer*c1.denom)+(c1.numer*denom);

temp.denom=denom*c1.denom;

cout<<“\nNo Rational Setelah di Add”;

cout<<“\n numerator=”<<temp.numer<<“\n denominator =”<<temp.denom;

}

int main()

{

system (“cls”);

rational c1, c2;

int n;

do

{

cout<<“\n 1.Input data untuk no rational  “;

cout<<“\n 2. Addition of rational no. “;

cout<<“\n 3. Quit”;

cout<<“\n Enter Pilihan Anda [1-3]: “;

cin>>n;

switch(n)

{

case 1:

cout<<endl<<“\n Input data untuk No Rational Pertama”;

c1.getdata();

//cout<<endl<<“\n Input data untuk No Rational Kedua “;

//c2.getdata ();

//system (“cls”);

break;

case 2:

c1+c2;

getch();

//system (“cls”);

break;

case 3:

exit(1);

break;

}

} while (n!=3);

getch();

}

Jawaban Hasil Programnya:

  1. Sebuah bilangan komplek k dapat ditulis dalam bentuk k = a + bi, dimana a dan b adalah bilangan real dan i adalah bilangan imajiner sehingga i*i = -1. Bilangan a biasanya disebut bagian real dan bilangan b merupakan bagian imajiner dari bilangan k. Buatlah kelas Komplek sehingga kelas tersebut dapat digunakan untuk bekerja dengan bilangan komplek, Diharapkan main program (program utama) dapat menggunakan kelas tersebut sebagai berikut:

void main(){

Complex A(2,3);

Complex B, C;

Cout << “inputkan bilangan komplek: “; Cin >> B;

C = B + A;     //operator penjumlahan

cout << “Bil komplek I: ” << C;  //friend operator <<

C = B – A;     //operator pengurangan

cout << “Bil komplek II: ” << C;

if (A == B)    //operator perbandingan

cout << “Bilangan komplek A dan B sama”;

C = A * B;     //operator perkalian bil komplek

C = A * 2.5;   //operator perkalian dengan bil real

}

Jawaban Programnya:

#include <cmath>

#include <iostream>

using namespace std;

class Complex {

public:

// Konstruktor

Complex (double x = 0.0, double y = 0.0) : re (x), im (y) {

}

Complex (const Complex &cn) : re (cn.re), im (cn.im) {

}

Complex &operator= (const Complex &cn) {

re = cn.re;

im = cn.im;

return *this;

}

static Complex fromPolar (double radius, double phase) {

double x = radius * cos((M_PI * phase) / 180.0);

double y = radius * sin((M_PI * phase) / 180.0);

return Complex(x, y);

}

// Penjumlahan dengan bilangan complex

Complex operator+ (const Complex &cn) const {

return Complex(re + cn.re, im + cn.im);

}

// Pengurangan dengan bilangan complex

Complex operator- (const Complex &cn) const {

return Complex(re – cn.re, im – cn.im);

}

// Perkalian complex

Complex operator* (const Complex &cn) const {

return Complex((re * cn.re) – (im * cn.im),

(im * cn.re) + (re * cn.im));

}

// Pembagian complex

Complex operator/ (const Complex &cn) const {

if (this->isNull() == false && cn.isNull() == false) {

double tmp = (cn.re * cn.re) + (cn.im * cn.im);

return Complex(((re * cn.re) + (im * cn.im)) / tmp,

((im * cn.re) – (re * cn.im)) / tmp);

}

return Complex();

}

bool isNull () const {

return re == 0.0 && im == 0.0;

}

// Mendapatkan complex conjugate

Complex getConjugate () const {

return Complex(re, -im);

}

// Mendapatkan r dari bilangan complex

double getRadius () const {

return sqrt((re * re) + (im * im));

}

// Mendapatkan sudut dari bilangan complex.

double getPhase (bool *ok = 0) const {

double result = 0.0;

if (isNull() == false) {

if (re != 0.0 && im != 0.0) {

result = (atan(im / re) * 180.0) / M_PI;

} else {

if (re == 0.0) {

result = (im > 0.0)? 90.0 : -90.0;

} else if (im == 0.0) {

result = (re > 0.0)? 0.0 : 180.0;

}

}

if (ok != 0) {

*ok = true;

}

} else {

if (ok != 0) {

*ok = false;

}

}

return result;

}

// Bagian real

double re;

// Bagian imajiner

double im;

};

int main(){

//int B;

Complex A(2,3);

Complex B, C;

cout << “inputkan bilangan komplek: “;

cin >> B;

C = B + A;     //operator penjumlahan

cout << “Bil komplek I: ” << C;  //friend operator <<

C = B – A;     //operator pengurangan

cout << “Bil komplek II: ” << C;

if (A == B)    //operator perbandingan

cout << “Bilangan komplek A dan B sama”;

C = A * B;     //operator perkalian bil komplek

C = A * 2.5;   //operator perkalian dengan bil real

}

Save to PDF

Permalink Leave a Comment

Minggu 05 – Algoritma Sorting & Searching

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

Week 5 – Tugas Kelompok 3 – 0454T

Soal Algoritma dan MOOP

Pertemuan 5 (Tugas kelompok ke-3)


  1. Buatlah program untuk menginputkan sejumlah bilangan bulat misalnya N kemudian menampilkan bilangan yang sudah diinputkan tersebut dalam keadaan terurut secara descending. Algoritma yang digunakan adalah bubble sort.
  1. Tulis program untuk mengurutkan dan mencari data dengan keyword NIM terhadap data mahasiswa yang setiap record-nya terdiri dari field NIM (10 karakter), Nama (25 karakter), dan IPK (float). Data diurutkan secara descending berdasarkan NIM Gunakan struktur data array of struct dan algoritma insertion sort. Pertama-tama program minta input jumlah mahasiswa yang akan diinputkan, kemudian baru menginputkan data mahasiswa dan kemudian menampilkan data mahasiswa tersebut dalam keadaan urut secara descending.

 Jawaban

 

  1. Buatlah program untuk menginputkan sejumlah bilangan bulat misalnya N kemudian menampilkan bilangan yang sudah diinputkan tersebut dalam keadaan terurut secara descending. Algoritma yang digunakan adalah bubble sort.

Jawaban programnya:

/*—- METODE DES BUBBLE SORT —-*/

#include <stdio.h>

#include <conio.h>

int main() {

int i, j, n; //Deklarasi index untuk array

int Tmp; //Tmp penampung elemen array

int Arr[50]; //Deklarasi Array

//Aplikasi dimulai

printf(“Inputkan banyak data yang akan diurutkan : “);

scanf(“%i”, &n);

//Input array

for(i = 0; i < n; i++) { //Perulangan untuk inputan array

printf(“Masukan data ke %i : “, i + 1);

scanf(“%i”, &Arr[i]);

}

//Lakukan sorting descending dengan metode bubble

for(i = 1; i < n; i++) { //Lakukan perulangan untuk akses array

for(j = 0; j < n – 1; j++) { //Lakukan perulangan untuk pencocokan

if(Arr[j] < Arr[j + 1]) { //Cocokkan data 1 dengan data yang disebelahnya

Tmp = Arr[j]; //Tampung array lama

Arr[j] = Arr[j + 1]; //Ganti yang lama dengan array baru

Arr[j + 1] = Tmp; //Array baru ditukar dengan yang lama

}

}

}

//Tampilkan Hasil

printf(“\nSetelah Pengurutan\n”);

for(i = 0; i < n; i++) { //Perulangan untuk tampilan Array

printf(“Elemen ke %i : %i\n”, i + 1, Arr[i]);

}

getch(); //Tahan tampilan

}

Jawaban hasil output programnya:

  1. Tulis program untuk mengurutkan dan mencari data dengan keyword NIM terhadap data mahasiswa yang setiap record-nya terdiri dari field NIM (10 karakter), Nama (25 karakter), dan IPK (float). Data diurutkan secara descending berdasarkan NIM Gunakan struktur data array of struct dan algoritma insertion sort. Pertama-tama program minta input jumlah mahasiswa yang akan diinputkan, kemudian baru menginputkan data mahasiswa dan kemudian menampilkan data mahasiswa tersebut dalam keadaan urut secara descending.

 

Jawaban programnya:

#include <iostream>

#include <iomanip>

#include <string>

#include <cstring>

using namespace std;

#define ELEMENTS 6

inline int SequentialSearch(char kode[11][7], char key[7])

{

int idx=(-1);

for (int i=0; i<=10; i++)

{

if ( strcmp(key,kode[i])==0)

{ idx=i; }

}

return idx;

}

void insertion_sort(int x[],int length)

{

int key,i;

for(int j=1;j<length;j++)

{

key=x[j];

i=j-1;

while(x[i]>key && i>=0)

{

x[i+1]=x[i];

i–;

}

x[i+1]=key;

}

}

struct mhs

{

char NIM[10];

char NAMA[25];

float IPK;

};

typedef mhs mhsarr[100];

int main()

{

mhsarr x;

bool keluar=false;

int menu,i=0, z=0, totJum;

char tmpNim;

while (keluar==false)//menampilkan menu utama

{

cout << “\nMENU UTAMA”;

cout << “\n1. Input Data Mahasiswa”;

cout << “\n2. Tampil Data Mahasiswa secara Descending (Insertion Sort)”;

cout << “\n3. Keluar”;

cout << “\n\nMasukan pilihan anda [1-3] :”;

cin >> menu;

if(menu==1)

{

int jumlah;

cout<<“Masukan jumlah data yang akan diinput : “;

cin>>jumlah;

for (int i=0;i<jumlah;i++)

{

cout<<“\nNIM : “;

cin>>x[z].NIM;

cout<<“NAMA: “;

cin>>x[z].NAMA;

cout<<“IPK : “;

cin>>x[z].IPK;

cout<<endl;

z++;

totJum=totJum+jumlah;

}

}

else if (menu==2)

{

char *isi=””;

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

{

strcpy(isi,x[i].NIM);

//strcat(isi,”,”);

}

int A[ELEMENTS];

A[ELEMENTS]=atoi(isi);

//insertion_sort(z,totJum);

cout<<isi;

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

cout<<“\n|”<<setw(13)<<“NIM |”;

cout<<setw(32)<<“NAMA |”<<setw(7)<<“IPK |”<<endl;

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

for (int i=0;i<z;i++)

{

cout<<“|”<<setw(11)<<x[i].NIM<<” |”;

cout<<setw(30)<<x[i].NAMA<<” |”;

cout<<setw(5)<<x[i].IPK<<” |”<<endl;

}

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

}

else  if (menu=3)

{

keluar=true;

cout << “Terima Kasih\n”;

}

}

system(“pause”);

}

Hasil output programnya:

Save to PDF

Permalink 1 Comment

Minggu 03 – Struktur data

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

Week 3 – Tugas Kelompok 2 – 0454T

Soal Algoritma dan MOOP

Pertemuan 3 (tugas kelompok ke-2)


  1. Sebuah perusahaan membayar gaji karyawan departemen penjualan berdasarkan komisi. Karyawan menerima gaji mingguan berupa gaji tetap sebesar $200 ditambah komisi sebesar 9% dari nilai penjualan karyawan tersebut. Tulis program untuk menghitung jumlah karyawan departemen tersebut yang mendapatkan gaji mingguan dalam kelompok berikut:

$ 200 – $ 299

$ 300 – $ 399

$ 400 – $ 499

$ 500 – $ 599

$ 600 – $ 699

$ 700 – $ 799

$ 800 – $ 899

$ 900 – $ 999

$ 1000 dan selebihnya

  1. Tulis program untuk mendapatkan 10 buah bilangan yang berbeda antara 1 dan 25. Lakukan pemeriksaan apakah bilangan yang diketikkan telah pernah ada sebelumnya.

Jawaban

 

 

  1. Sebuah perusahaan membayar gaji karyawan departemen penjualan berdasarkan komisi. Karyawan menerima gaji mingguan berupa gaji tetap sebesar $200 ditambah komisi sebesar 9% dari nilai penjualan karyawan tersebut. Tulis program untuk menghitung jumlah karyawan departemen tersebut yang mendapatkan gaji mingguan dalam kelompok berikut:

$ 200 – $ 299

$ 300 – $ 399

$ 400 – $ 499

$ 500 – $ 599

$ 600 – $ 699

$ 700 – $ 799

$ 800 – $ 899

$ 900 – $ 999

$ 1000 dan selebihnya

Jawaban :

#include <iostream>

using namespace std;

int main()

{

float N,K;

int A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;

int J;

cout<<“————————————————————————-“<<endl;

cout<<“Jumlah Karyawan : “;

cin>>J;

cout<<“————————————————————————-“<<endl;

for (int i=0;i<J;i++)

{

cout<<“Penjualan karyawan ke “<<i+1<<” : $”;

cin>>K;

K=K*0.09;

cout<<“gaji($200)+komisi($”<<K<<“)”<<“total=$”<<200+K<<endl;

N=200+K;

if (N>=200 && N<=299)

{ A=A+1; }

else if (N>=300 && N<=399)

{ B=B+1; }

else if (N>=400 && N<=499)

{ C=C+1; }

else if (N>=500 && N<=599)

{ D=D+1; }

else if (N>=600 && N<=699)

{ E=E+1; }

else if (N>=700 && N<=799)

{ F=F+1; }

else if (N>=800 && N<=899)

{ G=G+1; }

else if (N>=900 && N<=999)

{ H=H+1; }

else if (N>=1000)

{ I=I+1; }

}

cout<<“————————————————————————-“<<endl;

cout<<“jumlah karyawan dengan gaji ($200-$299) : “<<A<<endl;

cout<<“jumlah karyawan dengan gaji ($300-$399) : “<<B<<endl;

cout<<“jumlah karyawan dengan gaji ($400-$499) : “<<C<<endl;

cout<<“jumlah karyawan dengan gaji ($500-$599) : “<<D<<endl;

cout<<“jumlah karyawan dengan gaji ($600-$699) : “<<E<<endl;

cout<<“jumlah karyawan dengan gaji ($700-$799) : “<<F<<endl;

cout<<“jumlah karyawan dengan gaji ($800-$899) : “<<G<<endl;

cout<<“jumlah karyawan dengan gaji ($900-$999) : “<<H<<endl;

cout<<“jumlah karyawan dengan gaji (>=$1000)   : “<<I<<endl;

cout<<“————————————————————————-“<<endl;

system(“pause”);

}

 

  1. 1.               Tulis program untuk mendapatkan 10 buah bilangan yang berbeda antara 1 dan 25. Lakukan pemeriksaan apakah bilangan yang diketikkan telah pernah ada sebelumnya.

 

Jawaban :

#include <stdio.h>

int main()

{

int bil[10];

int x,y;

printf(“|===========================================|\n”);

printf(“| Tugas Kel ke 3, Kel 2, Hendra, Yaya, Yan  |\n”);

printf(“| Program Pencarian Nilai 1-25 yang berbeda | \n”);

printf(“|===========================================|\n\n”);

for(x=1;x<=10;x++)

{

do{

printf(” Masukkan angka ke – %d : “,x);

scanf(“%d”,&bil[x]);

for(y=x-1;y>=0;y–)

{

if(bil[x]==bil[y])

{

printf(” – Angka sudah ada\n\n”);

break;

}

}

}while(bil[x]<1||bil[x]>25||bil[x]==bil[y]);

}

getchar();

}

Tampilan


 Save to PDF

 

Permalink Leave a Comment

Algoritma Pemrograman & Elemen Dasar C++

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

Week 1 – Tugas Kelompok 1 – 0454T

Soal Algoritma dan MOOP

Pertemuan 1 (tugas kelompok-1)

 

  1. Buatlah program sederhana untuk Toko Electronic Senang Selalu untuk membantunya dalam menghitung harga dari barang yang akan dijual, besarnya PPN yang harus dibayar, serta total biaya (dengan PPN) yang dibayar oleh pembeli besarnya cicilan yang akan dibayar oleh pembeli sekali cicil.

Dengan langkah-langkah sebagai berikut:

1. Buatlah tampilan awal terlebih dahulu.

2. Minta inputan untuk jumlah barang yang dibeli, harga satuan, dan lama cicilan.

3. Lalu hitunglah harga total tanpa PPN, PPN yang harus dibayar, dan harga total

dengan PPN, serta besarnya cicilan yang harus dibayar perbulannya.

(PPN yang harus dibayar adalah 10% dari harga total tanpa PPN).

4. Kemudian yang terakhir tampilkan semua hasil yang telah dihitung tadi.

Catatan:

–          Untuk tampilan pada layar Anda bisa menggunakan objek constream dan format output yang sudah diajarkan.

–          Untuk menunggu penekanan sembarang tombol Anda bisa menggunakan fungsi getch.

Contoh output program:

Toko Electronic Senang Selalu

Jumlah barang yang dibeli      : 3

Harga barang satuan                : Rp.4000000

Banyak cicilan                            : 5

Harga total tanpa PPN              : Rp.12000000

PPN 10 %                                    : Rp.1200000

Harga dengan PPN                   : Rp.13200000

Cicilan per bulan                       : Rp.2640000

  1. Tuliskan program untuk menampilkan bilangan dengan berbagai basis, seperti biner, octal dan hexasedimal, dimana input program adalah bilangan desimal.
  1. Buatlah sebuah program penghitung nilai tukar mata uang (Yen -> Rupiah). Dengan langkah-langkah sebagai berikut:

v  Buatlah tampilan awal sesuai dengan format output yang ada.

v  Tunggu penekanan sembarang tombol untuk melanjutkan program.

v  Tampilkan keterangan kurs dan minta input berapa banyak mata uang Yen yang akan ditukar.

v  Hitung jumlah penukaran, bunga penukaran sebesar 0,1%, dan total penukaran, kemudian tampilkan hasilnya.

a)    Jumlah didapat dari mata uang Yen yg akan ditukar dikali dgn kurs (Rp 70,-)

b)    Bunga didapat dari Jumlah dikali dengan 0,1%

c)      Total didapat dari Jumlah dikurangi dengan Bunga.

Jawaban

Jawaban Toko Elektronik

Tampilan awal dari program yang kami buat

Script program C++

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

float A, B, C, D, E, F, G;

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

cout << “Toko Electronic Senang Selalu” << endl;

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

cout << “Form Input :\n” << endl;

cout << ” 1. Jumlah barang yang dibeli = “;

cin >> A;

cout << “\n 2. Harga barang satuan     = “;

cin >> B;

cout << “\n 3. Banyak cicilan          = “;

cin >> C;

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

cout << “Hasil Perhitungan :\n” << endl;

D=A*B;

E=0.1*D;

F=D+E;

G=F/C;

cout << ” – Harga total tanpa PPN = Rp ” << D << endl;

cout << ” – PPN 10 % = Rp ” << E << endl;

cout << ” – Harga dengan PPN = Rp ” << F << endl;

cout << ” – Cicilan per bulan = Rp ” << G << endl;

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

system(“pause”);

return 0;

}

Tampilan hasil akhir


  1. Tuliskan program untuk menampilkan bilangan dengan berbagai basis, seperti biner, octal dan hexasedimal, dimana input program adalah bilangan desimal.

Jawaban             programnya:

#include<iostream>

//#include<stdio.h>

//#include<conio.h>

//#include<string.h>

using namespace std;

int main(void)

{

int dec,decoct, dechex;

cout << “Program Konversi dari bilangan Decimal ke Biner, Octal, Hexsadecimal”;

cout << “\nMasukan bilangan Decimal: “;

cin >>dec;

decoct=dec;

decoct=dec;

dechex=dec;

/* Konversi Decimal Ke Biner */

int bin,n,i=0,a[10];

printf(“Bilangan Biner-nya adalah “);

do

{

a[i]=dec%2;

dec=dec/2;

i++;

}while(dec!=0);

for(n=i-1;n>=0;n–)

printf(“%d”,a[n]);

printf(“\n”);

/* Konversi Decimal Ke Octal */

int j,b[10];

j=0;

printf(“Bilangan Octal-nya adalah “);

while(decoct!=0)

{

b[j]=decoct%8;

decoct=decoct/8;

j++;

}

j–;

for(;j>=0;j–)

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

printf(“\n”);

/* Konversi Decimal Ke Hexadecimal */

int k,c[10];

k=0;

printf(“Bilangan Hexadecimal-nya adalah “);

while(dechex!=0)

{

c[k]=dechex%16;

dechex=dechex/16;

k++;

}

k–;

for(;k>=0;k–)

switch(c[k])

{

case 10:

printf(“A”);

break;

case 11:

printf(“B”);

break;

case 12:

printf(“C”);

break;

case 13:

printf(“D”);

break;

case 14:

printf(“E”);

break;

case 15:

printf(“F”);

break;

default:

printf(“%d”,c[k]);

}

printf (“\n”);

system (“Pause”);

}

Jawaban hasil output programnya:

  1. Buatlah sebuah program penghitung nilai tukar mata uang (Yen -> Rupiah). Dengan langkah-langkah sebagai berikut:

v  Buatlah tampilan awal sesuai dengan format output yang ada.

v  Tunggu penekanan sembarang tombol untuk melanjutkan program.

v  Tampilkan keterangan kurs dan minta input berapa banyak mata uang Yen yang akan ditukar.

v  Hitung jumlah penukaran, bunga penukaran sebesar 0,1%, dan total penukaran, kemudian tampilkan hasilnya.

a)      Jumlah didapat dari mata uang Yen yg akan ditukar dikali dgn kurs (Rp 70,-)

b)      Bunga didapat dari Jumlah dikali dengan 0,1%

c)      Total didapat dari Jumlah dikurangi dengan Bunga.

Jawaban :

Code

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

float kurs, yen, jumlah, bunga, total;

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

cout << “penghitung nilai tukar mata uang (Yen -> Rupiah)” << endl;

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

system(“pause”);

cout << “kurs 1 yen = Rp. 70,-” << endl;

cout << “Form Input :\n” << endl;

cout << ” Jumlah yen yang akan ditukar = “;

cin >> yen;

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

cout << “Hasil Perhitungan :\n” << endl;

kurs=70;

jumlah = kurs * yen;

bunga = jumlah * 0.001;

total = jumlah – bunga;

cout << ” jumlah penukaran : Rp. ” << jumlah << endl;

cout << ” bunga penukaran : Rp. ” << bunga << endl;

cout << ” total penukaran : Rp. ” << total << endl;

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

system(“pause”);

return 0;

}

Save to PDF


Permalink 1 Comment

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

Permalink Leave a Comment

Polymorphism

9 May 2011 at 12:29 (Algoritma & Metode OOP (C++))

Week 9 – Tugas Individu 9 – 0454T

Soal Algoritma dan MOOP

Pertemuan 9

  1. Diberikan penggalan program sebagai berikut:

#include <constrea.h>

class Induk{

public:

virtual int P(int x){return(x*x);}

int Q(int x, int y){return(y*P(x));}

};

class Anak : public Induk{

public:

int P(int x){return(x*x*x);}

int Q(int x){return(10*P(x));}

};

Ditanyakan:

a.)    apa output dari main program berikut:

void main(){

Induk A;

cout << “nilai Q(2,5) = “ << A.Q(2,5) << endl;

}

b.)    apa output dari main program berikut:

void main(){

Induk *B; B=new Anak;

cout << “nilai Q(2,5) = “ << B->Q(2,5) << endl;

}

c.)    apa output dari main program berikut:

void main(){

Anak C;

cout << “nilai Q(5) = “ << C.Q(5) << endl;

}

  1. Buatlah bagian program dengan ketentuan berikut.

3 (Tiga) class yang memiliki informasi sebagai berikut:

–      Class Shape, sifatnya abstract memiliki 1 public function: double luas();

–      Class Circle, derived dari Shape secara public, memiliki 1 member private: float radius;  1 function public: double luas() yang berisi rumus luas lingkaran; dan 1 contructor dengan 1 parameter yang langsung memberi isi pada radius. (Rumus luas lingkaran: luas = pi*r*r)

–      Class Triangle, derived dari Shape secara public, memiliki 2 member private: float alas dan tinggi;  1 function public: double luas() yang berisi rumus luas segitiga yaitu 0.5*alas*tinggi, dan 1 constructor dengan 2 parameter yang memberi nilai awal alas dan tinggi.

–      Apabila ditambah potongan program berikut:

void main(){

Circle MyCircle(7);

Cout<<”Luas MyCircle = ”<<MyCircle.luas();

Triangle MyTriangle(10, 5);

Cout<<”\nLuas MyTriangle = ”<<MyTriangle.luas();

Shape *ptr; ptr = &MyCircle;

Cout<<”\nLuas Pointer Shape = ”<< ptr->luas();

}

Akan menghasilkan tampilan:

Luas MyCircle = 154

Luas MyTriangle = 25

Luas Pointer Shape = 154

  1. Dengan menggunakan kelas inheritance dan polymorphism, buatlah class declaration dan function definition dari kelas hierarky (hierarchy class) di bawah: (petunjuk: gunakan virtual method untuk polymorphism).

  1. Diberikan penggalan program sebagai berikut:

#include <constrea.h>

class Induk{

public:

virtual int P(int x){return(x*x);}

int Q(int x, int y){return(y*P(x));}

};

class Anak : public Induk{

public:

int P(int x){return(x*x*x);}

int Q(int x){return(10*P(x));}

};

Ditanyakan:

a.)    apa output dari main program berikut:

void main(){

Induk A;

cout << “nilai Q(2,5) = “ << A.Q(2,5) << endl;

}

Jawaban Outputnya:

a.)    apa output dari main program berikut:

void main(){

Induk *B; B=new Anak;

cout << “nilai Q(2,5) = “ << B->Q(2,5) << endl;

}

Jawaban Outputnya:

a.)    apa output dari main program berikut:

void main(){

Anak C;

cout << “nilai Q(5) = “ << C.Q(5) << endl;

}

Jawaban Outputnya:

  1. Buatlah bagian program dengan ketentuan berikut.

3 (Tiga) class yang memiliki informasi sebagai berikut:

–      Class Shape, sifatnya abstract memiliki 1 public function: double luas();

–      Class Circle, derived dari Shape secara public, memiliki 1 member private: float radius;  1 function public: double luas() yang berisi rumus luas lingkaran; dan 1 contructor dengan 1 parameter yang langsung memberi isi pada radius. (Rumus luas lingkaran: luas = pi*r*r)

–      Class Triangle, derived dari Shape secara public, memiliki 2 member private: float alas dan tinggi;  1 function public: double luas() yang berisi rumus luas segitiga yaitu 0.5*alas*tinggi, dan 1 constructor dengan 2 parameter yang memberi nilai awal alas dan tinggi.

–      Apabila ditambah potongan program berikut:

void main(){

Circle MyCircle(7);

Cout<<”Luas MyCircle = ”<<MyCircle.luas();

Triangle MyTriangle(10, 5);

Cout<<”\nLuas MyTriangle = ”<<MyTriangle.luas();

Shape *ptr; ptr = &MyCircle;

Cout<<”\nLuas Pointer Shape = ”<< ptr->luas();

}

Akan menghasilkan tampilan:

Luas MyCircle = 154

Luas MyTriangle = 25

Luas Pointer Shape = 154

Jawaban Programnya:

// progam c++ dengan polymorphism

#include <iostream>

#include <conio.h>

#include <math.h>

#include <iomanip>

using namespace std;

class Shape

{

public:

virtual double Luas()=0; //pure virtual

};

class Circle : public Shape

{

private:

float radius;

public:

Circle (float r)

{

radius=r;

}

double Luas() { return(3.14*radius*radius);}

};

class Triangle : public Shape

{

private:

float Alas, Tinggi;

public:

Triangle (float a, float t)

{

Alas=a;

Tinggi=t;

}

double Luas() { return (0.5 * Alas * Tinggi);}

};

int main()

{

Circle MyCircle(7);

cout<<“Luas MyCircle = “<< setprecision(0) << fixed <<MyCircle.Luas();

Triangle MyTriangle(10, 5);

cout<<“\nLuas MyTriangle = “<<MyTriangle.Luas();

Shape *ptr; ptr = &MyCircle;

cout<<“\nLuas Pointer Shape = “<< ptr->Luas();

cout <<“\n”;

system (“Pause”);

}

Jawaban Hasil Output Programnya:

1.      Dengan menggunakan kelas inheritance dan polymorphism, buatlah class declaration dan function definition dari kelas hierarky (hierarchy class) di bawah: (petunjuk: gunakan virtual method untuk polymorphism).

 Jawaban Programnya:

// progam c++ dengan polymorphism

#include <iostream>

#include <conio.h>

#include <math.h>

#include <iomanip>

using namespace std;

class Figure

{

      public:

             virtual double Luas()=0; //pure virtual

             virtual double Keliling()=0; //pure virtual

};

class Lingkaran : Figure

{

      private:

              double radius;

      public:

             Lingkaran (double r)

              {

                     radius=r;

              }

             double Luas(){ return(3.14*radius*radius);}

             double Keliling() {return (2*3.14*radius);}

};

class BujurSangkar:Figure

{

      private:

              double panjang_sisi;

      public:

              BujurSangkar (double s)

              {

                     panjang_sisi=s;

              }

              double Luas(){ return(panjang_sisi*4);}

              double Keliling() {return (panjang_sisi*panjang_sisi);}

};

class SegiTiga:Figure

{

      private:

              double panjang_sisi;

      public:

              SegiTiga (double s)

              {

                     panjang_sisi=s;

              }

              double Luas(){ return(0.5*panjang_sisi*panjang_sisi);}

              double Keliling() {return (panjang_sisi+panjang_sisi+panjang_sisi);}

};

Save to PDF

Permalink 1 Comment

Inheritance C++

4 July 2010 at 22:55 (Algoritma & Metode OOP (C++)) (, , , , )

Week 8 – Tugas Individu 8 – 0454T

1.    Buatlah program dengan class inheritance untuk merepresentasikan class tabung yang mempunyai data jari2 alas tabung yang berbentuk lingkaran dan tinggi.  Class tabung merupakan class turunan dari class lingkaran yang mempunyai data jari2. Function yang ada pada class lingkaran adalah inputjari2, hitung luas dan hitung keliling. Sedangkan function yang ada pada class tabung adalah inputData, hitung volume dan hitung permukaan tabung.

Jawaban programnya:
#include <iostream>
using namespace std;
class Lingkaran
{
private:
float phi;
public :
int Jari;
Lingkaran()
{
phi=3.14;
Jari=0;
}
void InputJari(int r)
{
Jari=r;
}
double HitungLuas()
{
double Luas=phi*Jari*Jari;
return Luas;
}
double HitungKeliling()
{
double Keliling=2*phi*Jari;
return Keliling;
}
};

class Tabung : public Lingkaran
{
private:
int Tinggi, vJari;
float Luas, Keliling;
public:
void InputData(int t)
{
Tinggi=t;
cout << “\nMasukkan Jari-Jari Tabung : “;
cin >> vJari;
Lingkaran::InputJari(vJari);

}
double HitungVolume()
{
Luas=Lingkaran::HitungLuas();
double Volume=Luas*Tinggi;
cout <<“\nVolume Tabung = ” << Volume;
return Volume;
}
double HitungPermukaan()
{
Keliling=Lingkaran::HitungKeliling();
double Permukaan=Keliling*(Jari+Tinggi);
cout <<“\nPermukaan Tabung = ” << Permukaan;
return Permukaan;
}
};
int main()
{
int vTinggi;
Tabung vTabung;
cout << “Mengitung Volume dan Permukaan Tabung\n”;
cout << “=====================================”;
cout << “\nMasukkan Tinggi Tabung : “;
cin >> vTinggi;
vTabung.InputData(vTinggi);
vTabung.HitungVolume();
vTabung.HitungPermukaan();
cout<< “\n”;
system (“Pause”);
}

2.    Buatlah sebuah program dengan menggunakan class dan konsep inheritance (pewarisan sifat).Dengan langkah-langkah sebagai berikut:
a)    Deklarasi dan definisikan sebuah class induk dengan data member dan method yang diperlukan.
b)    Deklarasi dan definisikan sebuah class anak yang diturunkan secara public dari class induk dan tambahkan method yang merupakan kelebihan class anak yang tidak dimiliki class induk dimana class induk hanya bisa bergerak ke kiri, kanan, atas, dan bawah sedangkan class anak selain bergerak juga bisa ganti warna.
c)    Bentuk obyek dari class anak dan lakukan method bergeraknya, gerakkan obyek dengan menggunakan anak panah.
d)    Tunggu penekanan tombol ENTER, jika sudah ditekan maka bentuk obyek class anak dan lakukan method bergeraknya, gerakkan obyek dengan menggunakan anak panah, ganti warna obyek dengan menekan tombol spasi.

Jawaban Programnya:
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<iostream>
using namespace std;
const int LEN = 80;
class PindahObject
{
private:
char Kata[LEN];
//char Kata;
int a, b;
public:
void InputData()
{
//cout << “\nMasukkan Kata: “;
//cin >> Kata;
//cout << “\nMasukkan sumbu X : “;
//cin >> a;
//cout << “\nMasukkan sumbu Y : “;
//cin >> b;
strcpy(Kata,”***”);
a=15; b=15;
}
void gotoxy(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void Pindah()
{

gotoxy(a,b);
cout << Kata;
int c;
switch (c = getch())
{
case 0:
case 224:
switch (c = getch())
{
case 72: //up arrow
{
system (“cls”);
b=b-1;
gotoxy(a,b);
cout << Kata;
break;
}
case 75: //left arrow
{
system (“cls”);
a=a-1;
gotoxy(a,b);
cout << Kata;
break;
}
case 77: //right arrow
{
system (“cls”);
a=a+1;
gotoxy(a,b);
cout << Kata;
break;
}
case 80: //down arrow
{
system (“cls”);
b=b+1;
gotoxy(a,b);
cout << Kata;
break;
}
//default: cout << “extended key ” << c << “\n”;
}
break;
//default: cout << “normal key ” << c << “\n”;
}
}
};
class WarnaObject : public PindahObject
{
private:
#define BLACK 0
#define BLUE 1
#define GREEN 2
#define CYAN 3
#define RED 4
#define MAGENTA 5
#define BROWN 6
#define LIGHTGREY 7
#define DARKGREY 8
#define LIGHTBLUE 9
#define LIGHTGREEN 10
#define LIGHTCYAN 11
#define LIGHTRED 12
#define LIGHTMAGENTA 13
#define YELLOW 14
#define WHITE 15
#define BLINK 128
public:
void WarnaiObject()
{
bool keluar=false;
int Escape;
PindahObject::InputData();
while (keluar==false)//menampilkan menu utama
{
//Escape=getch();
//if (Escape=27) {keluar=true;}
switch (Escape = getch())
{
case 32:
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), GREEN);//Warna Hijau
//break;
}
case 72:
{
PindahObject::Pindah();
break;
}
case 75:
{
PindahObject::Pindah();
break;
}
case 77:
{
PindahObject::Pindah();
break;
}
case 80:
{
PindahObject::Pindah();
break;
}
case 27:
{
keluar=true;
break;
}

}

}

}
};
int main()
{
int Mulai;
WarnaObject Warna;
cout << “Tekan Enter untuk Mulai\n”;
switch (Mulai = getch())
{
case 13:
{
Warna.WarnaiObject();
break;
}
}
cout <<“\n”;
system (“Pause”);
}

3.    Buatlah program dengan class inheritance untuk menginputkan dan menampilkan data manager pada suatu perusahaan yang mempunyai data nip, nama, jenjang pendidikan, lulusan, alamat, departement, jumlah bawahan, dan gaji. Program dibuat dengan terlebih dahulu mendeklarasikan class manusia yang mempunyai data nama dan alamat, kemudian class karyawan yang mempunyai data nip, departement dan gaji, selanjutnya class mahasiswa yang mempunyai data nama sekolah, dan jenjang pendidikan. Masing-masing class tersebut mempunyai fungsi inputData dan displayData. Class Hirarkinya adalah sebagai berikut:


Hal –hal yang perlu dibuat adalah:
a.)    deklarasi masing-masing class, dengan ketentuan penurunan class karyawan dan class mahasiswa dari class manusia secara public, dan penurunan class manager dari class karyawan dan mahasiswa secara private.

Jawaban Programnya:
#include<iostream>
using namespace std;
const int LEN = 80;
class Manusia
{
private:
char Nama[LEN];
char Alamat[LEN];
//unsigned long number;
public:
void InputData()
{
cout << ” \nMasukkan Nama : ” ;
cin >> Nama;
cout << “\nMasukkan Alamat : ” ;
cin >> Alamat;
}
void DisplayData()
{
cout << “\nNama : ” <<Nama;
cout << “\nAlamat : ” <<Alamat;
}
};
class Karyawan: public Manusia
{
private:
char Nip[LEN];
char Departement[LEN];
int Gaji;
public:
void InputData()
{
Manusia::InputData();
cout << “\nMasukkan NIP : “;
cin >> Nip;
cout << “\nMasukkan Departement : “;
cin >> Departement;
cout << “\nMasukan Gaji : “;
cin >> Gaji;
}
void DisplayData()
{
Manusia::DisplayData();
cout << “\nNIP : ” << Nip;
cout << “\nDepartement : ” << Departement;
cout << “\nGaji : ” << Gaji;
}
};
class Mahasiswa : public Manusia
{
private:
char Sekolah[LEN];
char JenjangPendidikan[LEN];
public:
void InputData()
{
//Manusia::InputData();
cout << “\nMasukkan Sekolah : “;
cin >> Sekolah;
cout << “\nMasukkan Jenjang Pendidikan : “;
cin >> JenjangPendidikan;
}
void DisplayData()
{
//Manusia::DisplayData();
cout << “\nSekolah : ” << Sekolah;
cout << “\nJenjang Pendidikan : ” << JenjangPendidikan;
}
};
class Manager : private Karyawan, private Mahasiswa
{
private:
int JmlBawahan;
public:
void InputData()
{
Karyawan::InputData();
Mahasiswa::InputData();
cout << “\nMasukkan Jumlah Bawahan : “;
cin >> JmlBawahan;
}
void DisplayData()
{
Karyawan::DisplayData();
Mahasiswa::DisplayData();
cout <<“\nJumlah Bawahan : ” << JmlBawahan;
}
};
int main()
{
//Inisialisasi Class
Manager m1;
//Input Data
cout << “\nMasukkan data Manager : “;
m1.InputData();
//Tampilkan Data
cout << “\nData Manager : “; m1.DisplayData();
cout << “\n”;
system (“Pause”);

}

Save to PDF

Permalink Leave a Comment

Class dan Objek Lanjutan C++

4 July 2010 at 22:48 (Algoritma & Metode OOP (C++))

Week 7 – Tugas Individu 7 – 0454T

1.    Tuliskan program dengan class yang mempunyai variable static yang secara otomatis dapat mengetahui jumlah object yang tercipta pada suatu saat dan fungsi anggota static yang dapat mengembalikan nilai variable static.
Jawaban Programnya:
// Program Static dalam class
#include <iostream>
using namespace std;

class contohStatic {
public:
static int n;
contohStatic () { n++; };
~contohStatic () { n–; };
};

int contohStatic::n=0;

int main () {
contohStatic a;
contohStatic b[5];
contohStatic * c = new contohStatic;
cout << a.n << endl;
delete c;
cout << contohStatic::n << endl;
system (“Pause”);
return 0;
}

2. Tuliskan program dengan class untuk dapat menginputkan data mahasiswa dan menampilkannya seperti di bawah.

Sks NIM IPK
42 0800100001 3.23
58 0800200002 2.25
32 0800600006 3.17
62 0800100001 2.90
40 0800300003 3.34
48 0800400004 2.54
36 0800200002 2.47

Jawaban programnya:

// Program C++ dengan array object

#include <iostream>

#include <string.h>

#include <iomanip>

using namespace std;

class mhs {

private:

char NIM[10];

int SKS;

float IPK;

public:

mhs();

void InputData(char *, int, float);

void TampilData();

};

// definisi fungsi anggota

mhs::mhs()

{

strcpy(NIM, “”);

SKS=0;

IPK=0;

}

void mhs::InputData(char *nim, int sks, float ipk)

{

strcpy(NIM, nim);

SKS=sks;

IPK=ipk;

}

void mhs::TampilData()

{

cout<<“|”<<setw(5)<<SKS<<” |”;

cout<<setw(13)<<NIM<<” |”;

cout<<setw(5)<<IPK<<” |”<<endl;

}

int main()

{

mhs dataMhs[100];

char vnim[10];

int vsks;

float vipk;

bool keluar=false;

int menu,i=0,z=0;

while (keluar==false)//menampilkan menu utama

{

cout << “\nMENU UTAMA”;

cout << “\n1. Input Data Mahasiswa”;

cout << “\n2. Tampil Data Mahasiswa”;

cout << “\n3. Keluar”;

cout << “\n\nMasukan pilihan anda [1-3] :”;

cin >> menu;

if(menu==1)

{

// input data mahasiswa

cout << “\nInput NIM : “;

cin >> vnim;

cout << “\nInput jumlah SKS : “;

cin >> vsks;

cout << “\nInput IPK : “;

cin >> vipk;

dataMhs[z].InputData(vnim, vsks, vipk);

z++;

}

else if (menu==2)

{

// tampil data mahasiswa

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

cout<<“\n|”<<setw(7)<<“SKS |”;

cout<<setw(15)<<“NIM |”<<setw(7)<<“IPK |”<<endl;

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

for (int i = 0; i < z; i++)

{

dataMhs[i].TampilData();

}

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

}

else  if (menu=4)

{

keluar=true;

cout << “Terima Kasih\n”;

}

}

system (“pause”);

}

3.    Tuliskan program dengan class untuk merepresentasikan sebuah kamus sederhana, kamus tersebut mempunyai data kata, keterangan kata dan jumlah data maksimum yang dapat ditampung dengan array object.
Jawaban Programnya:
//Program Kamus
#include <iostream>
using namespace std;
class Kamus
{
private:
char Kata[20];
char KeteranganKata[40];
public:
Kamus();
void SetData(char *, char *);
void info();
};
//definisi fungsi anggota
Kamus::Kamus()
{
strcpy(Kata, “”);
strcpy(KeteranganKata, “”);
}
void Kamus::SetData(char *kt, char *kk)
{
strcpy(Kata, kt);
strcpy(KeteranganKata, kk);
}
void Kamus::info() {
cout << “Kata : ” << Kata << endl;
cout << “\nKeterangan Kata : ” << KeteranganKata << endl;
}
inline int BinarySearch(char kata[40][10],char key1[10], int low, int height)
{
int mid,idx=(-1);
while (low <= height)
{
char append1[16]=””;
char append2[16]=””;
mid = (int)(low + height)/2;
strcat(append1,kata[mid]);
strcat(append2,key1);
if (strcmp(append2,append1)==0)
{ idx=mid; return idx;}
if (strcmp(append2,append1)>0)
{ low = mid + 1; }
if (strcmp(append2,append1)<0)
{ height = mid – 1; }
}
return idx;
}

inline int SequentialSearch(int *X, int Key, int N)
{
int Index;
for (Index=0; Index<N; Index++)
if (Key == X[Index])
return(Index);
return(-1);
}

int main()
{
int N; //inisialisasi jumlah data kata yg diinput
char vkata[20];
char vketerangankata[40];
// deklarasi pointer
Kamus *dataKamus;
cout << “Inputkan jumlah Data Kamus: “; cin >> N;
dataKamus = new Kamus[ N ];
for (int i = 0; i < N; i++) {
cout << “Input Kata : “; cin >> vkata;
cout << “Input Keterangan Kata : “; cin >> vketerangankata;
dataKamus[i].SetData(vkata, vketerangankata);
}
cout <<“\n”;
/*
// display data kamus
for (int i = 0; i < N; i++){
cout << “Data kamus ke ” << (i+1) << ” :”;
cout << “\n”;
dataKamus[i].info();
}
*/
/*
char key1[10]=”123456789″;
int key;
char key2[6]=”12345″;
char kt[20][10]={“1″,”2”};
int val;
cout<<“Masukkan Kata      : “; cin>>key1;
val=BinarySearch(kt,key1, 0, 18);
if (val== (-1))
{ cout<<“\nData tidak ada”; }
else
{
cout<<“Kata        : “<<kt[val]<<endl;
cout<<“Keterangan Kata   : “<<keterangankata[val]<<endl;
}
*/
cout << “\n”;
system (“Pause”);
}

4.    Buatlah program C++ dengan menggunakan class untuk menggambarkan suatu object Calculator. Gunakan nama  kelas Calculator yang mempunyai 5 method yaitu tambah(), kurang() , kali() , bagi(), input(), dimana Method input() berfungsi menerima input dari user. Program harus mampu menerima 2 operand dan 1 buah operator dari user dan mampu menampilkan hasilnya. Silahkan  gunakan variabel – variabel yang anda butuhkan. Selain itu terdapat fungsi display() yang merupakan friend function dari class calculator dan digunakan untuk menampilkan hasil kalkulasi.
Jawaban Programnya:
//Program Calculator
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
class Calculator
{
private:
int Bil1, Bil2, Hasil;
public:
//int Hasil;
char Opt;
Calculator();
void tambah();
void kurang();
void kali();
void bagi();
void input(int, int,char);
friend void display(Calculator Cl);
};
Calculator::Calculator()
{
Bil1=Bil2=Hasil=0;
}
void Calculator::input(int bil1, int bil2, char opt)
{
Bil1=bil1;
Bil2=bil2;
Opt=opt;
}
void Calculator::tambah()
{
Hasil=Bil1+Bil2;
}
void Calculator::kurang()
{
Hasil=Bil1-Bil2;

}

void Calculator::kali()
{
Hasil=Bil1*Bil2;

}
void Calculator::bagi()
{
Hasil=Bil1/Bil2;
}
void display(Calculator Cl)
{
cout<<“Hasil dari: ” <<Cl.Bil1 << Cl.Opt<<Cl.Bil2<<“=”<<Cl.Hasil;
cout<<“\n”;
}

int main()
{
Calculator Clc ;
int bil1, bil2;
char opt;
cout<<“Masukan Bilangan pertama: “;
cin >> bil1;
cout<<“Masukan Bilangan kedua: “;
cin >> bil2;
cout<<“Masukan Operator Aritmatika [+,-,:,*]: “;
cin >> opt;
Clc.input(bil1,bil2,opt);

switch (opt)
{
case ‘+’:
Clc.tambah();
break;
case ‘-‘:
Clc.kurang();
break;
case ‘*’:
Clc.kali();
break;
case ‘/’:
Clc.bagi();
break;
//default :cout <<“A”;
}
display (Clc);
system (“Pause”);
}

5. Buatlah program lengkap dengan konsep nesting object untuk menghitung dan menampilkan nilai akhir matakuliah Algoritma dan Pemrograman dan grade nilainya. Nilai akhir dihitung dengan rumus:

Nilai teori = 50%(UAS) + 30%(UTS) + 20%(Tugas)

Nilai Praktikum = 40%(UAP) + 30%(UTP) + 15%(TM) + 15%(absen)

Nilai akhir = 65%(Nilai teori) + 35%(Nilai Praktikum)

Tabel Nilai:

Nilai Akhir Grade
85 – 100 A
75 – 84 B
65 – 74 C
50 – 64 D
0 – 49 E

class diagramnya:

Jawaban Program:

#include<iostream>

using namespace std;

class NilaiAkhir

{

public:

int NAkhir;

class NilaiTeori

{

private:

int UAS, UTS, Tugas, HasilTeori;

public:

NilaiTeori();

void Hitung(int, int, int);

};

void NilaiTeori::Hitung(int uas, int uts, int tugas)

{

UAS=uas;

UTS=uts;

Tugas=tugas;

HasilTeori=(0.5*UAS) + (0.3*UTS) + (0.2*Tugas);

}

class NilaiPraktek

{

private:

int UAP, UTP, TM, Absen, HasilPraktek;

public:

NilaiPraktek();

void HitungPraktek(int, int, int, int);

};

void NilaiPraktek::HitungPraktek(int uap, int utm, int tm, int absen)

{

UAP=uap;

UTP=utp;

TM=tm;

Absen=absen;

HasilPraktek=(0.4*UAP) + (0.3*UTP) + (0.15*TM)+ (0.15*Absen);

}

NilaiAkhir();

HitungNA(int hasilteori, hasilpraktek);

};

NilaiAkhir::NilaiAkhir()

{

NAkhir=0;

}

void NilaiAkhir::HitungNA(int hasilteori)

{

NAkhir=(0.65*hasilteori)+(0.35*hasilpraktek);

cout <<“Nilai Akhir: “<<NAkhir;

}

int main()

{

int vuas, vuts, vtugas;

NilaiAkhir cNilaiAkhir;

vuas=80;

vuts=90;

vtugas=95;

cNilaiAkhir.Hitung()

system (“Pause”);

}

Save to PDF

Permalink 1 Comment

Pemrograman berorientasi object C++

4 July 2010 at 22:41 (Algoritma & Metode OOP (C++))

Week 6 – Tugas Individu 6 – 0454T

1. Buatlah program dengan class untuk menghitung luas dan keliling lingkaran dengan cara membuat class lingkaran yang mempunyai data member jari-jari dan mempunyai function member imput jari, hitung luas, hitung keliling, display jari, display keliling, dan display luas.

Jawaban programnya:

#include <iostream>

using namespace std;

class lingkaran

{

private:

int jari;

float phi,luas,keliling;

public:

lingkaran();

void inputjari(int);

void hitungluas();

void hitungkeliling();

void displayjari();

void displaykeliling();

void displayluas();

};

//constructor definition

lingkaran::lingkaran()

{

jari=0;

phi=3.14;

luas=keliling=0;

}

void lingkaran::inputjari(int r)

{

jari=r;

}

void lingkaran::hitungluas()

{

luas=phi*jari*jari;

}

void lingkaran:: hitungkeliling()

{

keliling=2*phi*jari;

}

void lingkaran::displayjari()

{

cout<<“Jari-Jari Lingkaran = ” <<jari << “\n”;

}

void lingkaran::displaykeliling()

{

cout<<“Keliling Lingkaran = ” <<keliling << “\n”;

}

void lingkaran::displayluas()

{

cout<<“Luas Lingkaran = ” <<luas << “\n”;

}

int main()

{

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

cout << “Program Class Lingkaran\n”;

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

lingkaran vlingkaran;

vlingkaran.inputjari(3);

vlingkaran.hitungkeliling();

vlingkaran.hitungluas();

vlingkaran.displayjari();

vlingkaran.displaykeliling();

vlingkaran.displayluas();

system(“pause”);

}

2. Buatlah program dengan class untuk menghitung luas dan keliling segitiga, dengan mendeklarasikan class segitiga yang mempunyai data anggota tinggi dan alas bertipe integer dan mempunyai fungsi anggota input data, hitung keliling dan hitung luas serta tampil hasil.

Jawaban programnya:

#include<iostream>

using namespace std;

class segitiga

{

private:

int tinggi;

int alas;

float keliling,luas;

public:

segitiga();

void inputdata(int,int);

void hitungkeliling();

void hitungluas();

void tampilhasil();

};

segitiga::segitiga()

{

keliling=luas=0;

tinggi=alas=0;

}

void segitiga::inputdata(int t, int a)

{

tinggi=t;

alas=a;

}

void segitiga::hitungkeliling()

{

int sisi;

sisi=4;

keliling=sisi+sisi+sisi;

}

void segitiga::hitungluas()

{

luas=(alas*tinggi)/2;

}

void segitiga::tampilhasil()

{

cout << “Keliling Segitiga = ” << keliling << “\n”;

cout << “Luas Segitiga = ” << luas << “\n”;

}

int main()

{

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

cout << “Program Class Segitiga\n”;

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

segitiga vsegitiga;

vsegitiga.inputdata(3,5);

vsegitiga.hitungkeliling();

vsegitiga.hitungluas();

vsegitiga.tampilhasil();

system(“pause”);

}

3. Buatlah program dengan class untuk mencari akar persamaan kuadrat, dimana class mempunyai data member koefisien persamaan kuadrat yaitu A, B dan C. Kemudian class mempunyai fungsi member input data, hitung determinan dan display akar.

Jawaban programnya:

#include <iostream>

#include <math.h>

using namespace std;

class AkarPersamaanKuadrat

{

private:

float A,B,C;

float D;

public:

AkarPersamaanKuadrat();

void InputData(float, float, float);

void HitungDeterminan();

void DisplayAkar();

};

AkarPersamaanKuadrat::AkarPersamaanKuadrat()

{

A=B=C=D=0;

}

void AkarPersamaanKuadrat::InputData(float Aa, float Bb, float Cc)

{

A=Aa;

B=Bb;

C=Cc;

}

void AkarPersamaanKuadrat::HitungDeterminan()

{

D = ((B*B) – (4*A*C));

}

void AkarPersamaanKuadrat::DisplayAkar()

{

//cout <<D;

if (D<0) {

cout << “\nX1 dan X2 adalah Akar Imaginer” << endl;

}

else {

if (D==0) {

cout << “\nX1 = X2 = ” << -B / (2*A) << endl;

}

else {

if (D>0) {

cout << “X1 = ” << (-B + sqrt(D)) / 2*A;

cout << “\nX2 = ” <<  (-B) – sqrt(D) / 2*A;

cout << “\n”;

}

}

}

}

int main()

{

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

cout << “Program Class Akar Persamaan Kuadrat\n”;

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

AkarPersamaanKuadrat vAkarPersamaanKuadrat;

float x, y, z;

cout << “Input A = “;

cin >> x;

cout << “\nInput B = “;

cin >> y;

cout << “\nInput C = “;

cin >> z;

vAkarPersamaanKuadrat.InputData(x,y,z);

vAkarPersamaanKuadrat.HitungDeterminan();

vAkarPersamaanKuadrat.DisplayAkar();

system(“pause”);

}

4. Buatlah program dengan class dan funsi constructor untuk mencari akar persamaan kuadrat, dimana class mempunyai data member koefisien persamaan kuadrat yaitu A, B dan C. Kemudian class mempunyai fungsi member input data, hitung determinan dan display akar. Constructor digunakan untuk melakukan inisialisasi nilai A, B dan C dengan nilai A tidak boleh sama dengan nol.

Jawaban programnya:

#include <iostream>

#include <math.h>

using namespace std;

class AkarPersamaanKuadrat

{

private:

float A,B,C;

float D;

public:

AkarPersamaanKuadrat();

void InputData(float, float, float);

void HitungDeterminan();

void DisplayAkar();

};

AkarPersamaanKuadrat::AkarPersamaanKuadrat()

{

A=1;

B=C=D=0;

}

void AkarPersamaanKuadrat::InputData(float Aa, float Bb, float Cc)

{

A=Aa;

B=Bb;

C=Cc;

}

void AkarPersamaanKuadrat::HitungDeterminan()

{

D = ((B*B) – (4*A*C));

}

void AkarPersamaanKuadrat::DisplayAkar()

{

//cout <<D;

if (D<0) {

cout << “\nX1 dan X2 adalah Akar Imaginer” << endl;

}

else {

if (D==0) {

cout << “\nX1 = X2 = ” << -B / (2*A) << endl;

}

else {

if (D>0) {

cout << “X1 = ” << (-B + sqrt(D)) / 2*A;

cout << “\nX2 = ” <<  (-B) – sqrt(D) / 2*A;

cout << “\n”;

}

}

}

}

int main()

{

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

cout << “Program Class Akar Persamaan Kuadrat\n”;

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

AkarPersamaanKuadrat vAkarPersamaanKuadrat;

float x, y, z;

cout << “Input A = “;

cin >> x;

cout << “\nInput B = “;

cin >> y;

cout << “\nInput C = “;

cin >> z;

vAkarPersamaanKuadrat.InputData(x,y,z);

vAkarPersamaanKuadrat.HitungDeterminan();

vAkarPersamaanKuadrat.DisplayAkar();

system(“pause”);

}

5. Tulis program dengan class dan constructor untuk membuat obyek yang merepresentasikan koordinat kutub (r,q). Declarasikan class tersebut dengan data member r atau radius, dan sudut (q), sedangkan function membernya adalah iput data, konversi kutub ke radius, display data.

Jawaban programnya:

#include<iostream>

# include <math.h>

using namespace std;

class KoordinatKutub

{

private:

float radius, sudut;

long double x, y;

public:

KoordinatKutub();

void InputData(float, float);

void KonversiKutubKeRadius();

void DisplayData();

};

KoordinatKutub::KoordinatKutub()

{

radius=sudut=0;

}

void KoordinatKutub::InputData(float r, float s)

{

radius=r;

sudut=s;

}

void KoordinatKutub::KonversiKutubKeRadius()

{

x=radius * acos(sudut);

y=radius * asin(sudut);

}

void KoordinatKutub::DisplayData()

{

cout << “Koordinat Kutub (” << radius <<“,”<<sudut<<“) adalah \n”;

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

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

}

int main()

{

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

cout << “Program Class Koordinat Kutub\n”;

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

KoordinatKutub vKoordinatKutub;

vKoordinatKutub.InputData(3,5.3);

vKoordinatKutub.KonversiKutubKeRadius();

vKoordinatKutub.DisplayData();

system(“pause”);

}

6. Tulis program dengan class dan constructor untuk merepresentasikan class Barang dagangan yang mempunyai data member kode, Nama, dan harga barang, sedangkan function membernya adalah input data, hitung harga jual dan tampil data.

Jawaban programnya:

#include <iostream>

#include <iomanip>

using namespace std;

class BarangDagangan

{

private:

char Kode[10], Nama[20];

int HargaBarang, Qty, HargaJual;

public:

BarangDagangan();

void InputData(char *, char *, int, int);

void HitungHargaJual();

void TampilData();

};

BarangDagangan::BarangDagangan()

{

//      Kode=””;

//      Nama=””;

HargaBarang=Qty=HargaJual=0;

}

void BarangDagangan::InputData(char *k, char *n, int h, int q)

{

strcpy(Kode,k);

strcpy(Nama,n);

HargaBarang=h;

Qty=q;

}

void BarangDagangan::HitungHargaJual()

{

HargaJual=HargaBarang*Qty;

}

void BarangDagangan::TampilData()

{

cout << “\nHarga Jual”;

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

cout << “\n|”<<setw(10)<<“Kode |” << setw(25)<<“NAMA |”<<setw(15)<<“Harga Barang |”<<setw(7)<<“Qty |”<<setw(15)<<“Harga Jual |” << endl;;

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

cout << “|” <<setw(8)<<Kode<<” |” <<setw(23)<<Nama<<” |”<<setw(13)<<HargaBarang<<” |”<<setw(5)<<Qty<<” |”<<setw(13)<<HargaJual<<” |”;

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

}

int main()

{

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

cout << “Program Class Barang Dagangan\n”;

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

BarangDagangan vBarangDagangan;

char x[10], y[20];

int z, i;

cout << “Input Kode = “;

cin >> x;

cout << “\nInput Nama = “;

cin >> y;

cout << “\nInput Harga Barang = “;

cin >> z;

cout << “\nInput Quantity = “;

cin >> i;

cout << “\n”;

vBarangDagangan.InputData(x,y,z,i);

vBarangDagangan.HitungHargaJual();

vBarangDagangan.TampilData();

system(“pause”);

}

7. Buatlah class diagram dan declarasi class untuk menghitung luas dan keliling lingkaran dengan cara membuat class lingkaran yang mempunyai data member jari-jari dan mempunyai function member imput jari, hitung luas, hitung keliling, display jari, display keliling, dan display luas.

class lingkaran

{

private:

int jari;

float phi,luas,keliling;

public:

lingkaran();

void inputjari(int);

void hitungluas();

void hitungkeliling();

void displayjari();

void displaykeliling();

void displayluas();

};

8. Buatlah class diagram untuk merepresentasikan suatu segitiga sama sisi yang mempunyai data sisi segitiga dan mempunyai operasi input sisi, hitung luas, hitung keliling dan display data. Gunakan notasi UML untuk merepresentasikan class diagram tersebut.

9. Buatlah declarasi dan definisi class segitiga pada soal di atas dengan mengunakan bahasa pemrograman C++.

class segitiga
{
private:
int sisi;
int tinggi;
int alas;
float luas, keliling;
public:
segitiga();
void inputsisi(int);
void hitungluas();
void hitungkeliling();
void displaydata();
};

Save to PDF

-jari:int

-phi:float

-luas:float

-keliling:float

lingkaran

+lingkaran()

+inputjari():int

+hitungluas()

+hitungkeliling()

+displayjari()

+displaykeliling()

+displayluas()

Permalink Leave a Comment

Next page »