Senin, 21 Maret 2011

1. algoritma dan program untuk mencari titik tengah sebuah garis yang ujung titiknya adalah A(x1,y1)   dan B(x2,y2).


Analisis:
Inputan berupa garis A(x1, y1) ,B(x2, y2)
Output yang diminta adalah untuk mencetak titik tengah dari sebuah garis T(Tx, Ty)
Data Requirements:
Problem input: x1, x2 ,y1, y2
Problem output: titik tengah
Relevant formulas: titik tengah T={x1+x2)/2  ,  (y1+y2)/2}
Prosedur :
Setelah mengidentifikasi problem dari input dan output, maka langkah- langkah untuk memecahkan masalah adalah:
1. Masukkan x1
2. Masukkan x2
3. Masukkan y1
4. Masukkan y2
5. hitung titik tengah garis x dengan rumus  “x1+x2)/2”
6. hitung titik tengah garis y dengan rumus “y1+y2)/2”
7. tampilkan T(x1+x2)/2 ,  y1+y2)/2)
ALgoritma refinement:
Menghitung titik tengah  T={ x1+x2)/2   ,  (y1+y2)/2}
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int x1,x2,y1,y2;
cout<<”menghitung titik Tengah sebuah garis yang ujung”<<endl;
cout<<”titiknya adalah A(x1,y1) dan B(x2,y2)”<<endl;
cout<<endl;
cout<<”masukkan nilai x1 : “;
cin>>x1;
cout<<”masukkan nilai x2 : “;
cin>>x2;
cout<<”masukkan nilai y1 : “;
cin>>y1;
cout<<”masukkan nilai y2 : “;
cin>>y2;
cout<<endl;
cout<<”nilai dari garis X adalah : “<<(x1+x2)/2<<endl;
cout<<”nilai dari garis Y adalah : “<<(y1+y2)/2<<endl;
cout<<endl;
cout<<”titik tengahnya adalah : (“<<(x1+x2)/2<<”,”<<(y1+y2)/2<<”)”<<endl;
system(“PAUSE”);
return EXIT_SUCCESS;
}



2. algoritma dan program untuk memisahkan bilangan integer yang kurang dari 1000 menjadi komponen- komponennya.
Logika:
Kita mau mengetes apakah angka yang dimasukkan adalah ratusan, puluhan, atau satuan. Karena hanya itu saja jenis – jenis angka yang akan kita cari dalam program yang kita buat ini.
Pada waktu pertama kali kita “mengetes” bilangan tersebut, kita mencoba menguji:
1.       Apakah bilangan itu adalah ratusan?
Seperti yang kita ketahui,dalam pengucapan nama bilangan itu tentu saja harus dari bilangan terbesarnya lalu kemudian berurutan sampai yang terkecil. Misalnya 1217 dibaca seribu dua ratus tujuh belas. Nah, bilangangan terbesarnya adalah ribuan. Tapi karena program yang kita buat ini di batasi dengan nilai terbesarnya adalah ratusan, maka bilangan pertama yang diuji adalah “apakah bilangan itu adalah ratusan?”
  • jika tidak, maka bilangan itu dites apakah bilangan itu adalah puluhan.
  • jika ya, maka “bagian ratusan” bilangan itu diterjemahkan ke dalam kata – kata lalu sisanya (puluhan ke bawah).
2.       Apakah bilangan itu puluhan?
  • Jika tidak, maka bilangan itu akan dimasukkan ke dalam fungsi terakhir, fungsi satuan.
  • Jika  ya, maka “bagian puluhan” dari bilangan itu akan diterjemahkan dan kemudian sisanya dimasukkan ke dalam fungsi satuan.
Penjelasan kode:
Pertama – tama, perlu kita perhatikan bahwa sudah “disiapkan” sebuah perulangan di sana (while).Pada fungsi utama, seperti yang kita lihat, kita ingin supaya masukan kita mempunyai nilai paling tidak sama dengan satu. Lalu setelah itu, kita memasukkan input tersebut pada bagian ratusan. Caranya mirip dengan bagaimana kita menerjemahkan angka – angka ke dalam kata – kata. Prosesnya dapat kita lihat pada kondisi – kondisi pada fungsi tersebut.
  • Jika hasil bulat dari pembagian n dengan 100 adalah 0 (nol), maka bisa dipastikan bahwa n bukanlah bilangan ratusan.
  • Jika hasil bulat dari pembagian n dengan 100 adalah 1 dan sisanya adalah 0 (nol), maka n pastilah 100.
  • Jika hasil bulat dari pembagian n dengan 100 lebih besar dari 1, maka bilangan tersebut pastilah lebih atau sama dengan 200. Maka hasil bulat pembagian tersebut, dimasukkan ke dalam ratusan, lalu di cetak kata “ratus”.
Pada fungsi – fungsi yang lainnya juga dibuat dengan cara seperti itu hingga akhirnya pada bagian satuan dari bilangan tersebut. Hanya saja, jika kita perhatikan pada fungsi puluhan, ada sebuah kondisi dimana jika hasil bulat dari pembagian adalah 1, dan jika sisanya lebih besar dari 1, maka sisanya akan dimasukkan ke dalam pengenalan dan selanjutnya di cetak kata “belas”. Jadi misalnya, angkanya adalah 19, sisanya tentu saja adalah 9. Angka 9 di pengenalan, akan menghasilkan kata “sembilan “ di layar. Lalu ditambah dengan kata “belas “, maka hasilnya adalah “sembilan belas “. Jadi, kita tidak usah membuat case untuk “belas – belas” yang lain selain 11 (sebelas).

#include <cstdlib>
#include <iostream>
using namespace std;
void pengenalan (int n) {
switch (n) {
case 1: cout << “satu “; break;
case 2: cout << “dua “; break;
case 3: cout << “tiga “; break;
case 4: cout << “empat “; break;
case 5: cout << “lima “; break;
case 6: cout << “enam “; break;
case 7: cout << “tujuh “; break;
case 8: cout << “delapan “; break;
case 9: cout << “sembilan “; break;
case 10: cout << “sepuluh “; break;
case 11: cout << “sebelas “; break;
default: break;
}
}
void puluhan (int n) {
int bil, sisa;
bil = n / 10;
sisa = n % 10;
if (bil == 0)
pengenalan (sisa);
else if (bil == 1) {
if (sisa <= 1)
pengenalan (n);
else {
pengenalan (sisa);
cout << “belas “;
}
}
else {
pengenalan (bil);
cout << “puluh “;
pengenalan (sisa);
}
}
void ratusan (int n) {
int bil, sisa;
bil = n / 100;
sisa = n % 100;
if (n >= 1000)
cout<<”melewati batas ketentuan”;
else if (bil == 0)
puluhan (sisa);
else if (bil == 1) {
if (sisa == 0)
cout << “seratus “;
else {
cout << “seratus “;
puluhan (sisa);
}
}
else {
pengenalan (bil);
cout << “ratus “;
puluhan (sisa);
}
}
int main () {
int n = 1;
while (n == 1) {
int num1;
do {
cout << “”;
cin >> num1;
} while (num1 < 1);
ratusan (num1);
cout << endl;
}
}

3. algoritma dan program untuk menghitung determinan matriks berordo 2×2
Algoritma:
-deklarasi
Input (integer) = a,b,c,d.
Input (integer) = determinan.
-Deskripsi
Read [a,b,c,d]
Rumus determinan = (a x d)-(b x c)
Write hasil determinan
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int a,b,c,d,determinan;
cout<<”nilai a : “;
cin>>a;
cout<<”nilai b : “;
cin>>b;
cout<<”nilai c : “;
cin>>c;
cout<<”nilai d : “;
cin>>d;
cout<<endl;
determinan=(a*d)-(b*c);
cout<<”nilai determinan matriksnya adalah : “<<determinan<<endl;
system(“PAUSE”);
return EXIT_SUCCESS;
}

0 komentar:

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Blogger Theme by Lasantha - Premium Blogger Templates | Affiliate Network Reviews