Selasa, 19 April 2011

Program untuk fibonaci (dev c++)

#include
#include

int main()
{
int i,N,a[50];
printf("Banyak data untuk deret fibonacci : ");
scanf("%d",&N);
for (i=0;i {
if(i<2)
a[i]=i;
else
a[i]=a[i-2]+a[i-1];
}
printf("\nMenampilkan Deret Fibonacci %d suku pertama\n",N);
for (i=0; i {
printf("%d\t",a[i]);
}
return 0;
}

Senin, 18 April 2011

Program untuk Mengetahui Nilai Mahasiswa (DEV C++)


#include
#include
class Nilai {
friend ostream& operator<<(ostream&, Nilai&); friend istream& operator>>(istream&, Nilai&);
public:
Nilai() {};
void konversikan() {
if ((nilai > 0) && (nilai <= 20)) nilai_huruf = 'E'; else if ((nilai > 20) && (nilai <= 40)) nilai_huruf = 'D'; else if ((nilai > 40) && (nilai <= 60)) nilai_huruf = 'C'; else if ((nilai > 60) && (nilai <= 80)) nilai_huruf = 'B'; else nilai_huruf = 'A'; } private: int nilai; char nilai_huruf; }; istream& operator>>(istream& in, Nilai& masukan) {
cout << "Masukkan nilai angka = "; in >> masukan.nilai;
return in;
};

ostream& operator<<(ostream& out, Nilai& keluaran) { out << "Nilai angka : " << keluaran.nilai << endl; out << "Nilai huruf : " << keluaran.nilai_huruf<> angka;
angka.konversikan();
cout << angka;
getch();
return 0;
}

Perulangan Rekursif

#include

class Deret {
friend istream& operator>>(istream&, Deret&);
friend ostream& operator<<(ostream&, Deret&); public: long hitung(int); void cetak(int); private: int suku_n; long hasil; }; long Deret::hitung(int n) { if (n==1) return 1; else return n+hitung(n-1); } void Deret::cetak(int n) { if (n>0) {
cetak(n-1);
cout << "Suku ke : " << n << " = " << hitung(n) << endl; } } istream& operator>>(istream& input, Deret& x) {
cout << "Masukkan integer : "; input >> x.suku_n;
return input;
}

ostream& operator<<(ostream& output, Deret& x) { output << "Jumlah Deret : "; for (int i=1; i<= x.suku_n; i++) if (i == x.suku_n) cout << i << " adalah " << endl; else cout << i << " + "; x.cetak(x.suku_n); return output; } void main() { Deret Bilangan; cin >> Bilangan;
cout << Bilangan << endl;
}

Kamis, 14 April 2011

menghitung jumlah deret bilangan

ini ni program yang bikin muter-muter, sebenarnya kalau dilihat simpel aja koq yang bikin puyeng itu mencari rumus deret dan penerapannya di c++. Hahahaha nah nggak tau ni dapat ilham dari eh sekali klik klik langsung jadi, hehehe alhamdulillah akhirnya kelar juga.

Wesss cukup basa basinya, sekarang mari kita beranalisis dikit mengenai deret. Ketika ada suatu deret yang kita lakukan pertama adalah mencari rumus dari deret tersebut, nah kalau sudah tinggal implementasinya di C++. Seperti soal yang saya dapat ini meminta output berupa jumlah dari deret :

Wih gimana tu, lumayan serem kan deretnya..? Hahaha nah sekarang kita lihat algoritmanya

Alogoritma program :

1. program akan menampilkan “program sederhana menghitung jumlah dari rumus 1-(1/2)+(1/3)-(1/4)+…+(1/n)”.

2. program memanggil fungsi input dan meminta inputan berupa “n” (n mengacu ke deret pada gambar di atas).

3. program memanggil fungsi proses. dalam fungsi proses terdapat inialisasi varibel.

* rumus <- (-1) * jumlah <- 0 * total <- 0 * di dalam fungsi ini terdapat perulangan dengan batas awal 1, batas akhir “n”, dan kenaikan nilai ++. * rumus <- rumus*(-1) * total <= rumus/batas awal * jumlah <- jumlah + total * dan fungsi ini membalikkan nilai jumlah ke main 4. program menampilkan output Nah jika sedikit bingung dengan algoritma kasarnya mari kita lihat source codenya : view source print? 01 #include
02
03 class hitung
04 {
05 public:
06 int proses();
07 void input();
08 private:
09 int n;
10 float rumus,jumlah,total;
11 };
12
13 void hitung::input()
14 {
15 cin>>n;
16 cout<1)
33 cout<<"+("< 34 }
35 cout< 42 cout<<"tentukan nilai n : ";
43 hitung deret;
44 deret.input();
45 deret.proses();
46
47 return 0;
48 }

dan contoh hasilnya nanti akan terlihat seperti ini


untuk mencari bilangan ganjil dari bilangan 1 sampai 100.

* deklarasi
o bilangan : integer
o for if
o for(int i=1;i<100;i++) o if(i%3==0 && i%5==0) o write(bilangan) o end for #include
#include
class bil{
public:
int proses();
private:
int totl;
};
int bil::proses()
{
totl=0;
for(int i=1;i<100;i++){
if(i%3==0 && i%5==0)
{
cout< totl+=1;
}
}
cout<<"dan totl bil ada : ";
cout< return totl;
}
int main()
{
cout<<"bil antara 1-100 yang % 3 dan 5"< getch();
bil bagi;
bagi.proses();

return 0;
}

Rabu, 13 April 2011

menentukan tahun kabisat menggunakan dev c++

#include
#include

using namespace std;
class tahun_kabisat{
friend istream& operator>>(istream&,tahun_kabisat&);
private:
int bil;

public:
void kabisat();
};
istream& operator>>(istream& in,tahun_kabisat& x) {
cout<<"Masukkan tahun="; in>>x.bil;
return in;
}

void tahun_kabisat :: kabisat(){
if(bil % 4 == 0){
cout<<"Tahun kabisat.\n"; } else cout<<"Bukan tahun kabisat.\n"; cout<>X;
X.kabisat();

cout<
system("PAUSE");
return EXIT_SUCCESS;
}


menentukan tahun kabisat menggunakan JELIOT

public class tahun_kabisat{
int x;
public int bil(int x){
return x;
}
public final void kabisat()
{
int bil;
bil=Input.readInt();
if(bil % 4 == 0)
{
System.out.print("Tahun kabisat.\n");
}
else
{
System.out.print("Tahun bukan kabisat.\n");
}

System.out.print(bil);

}
public tahun_kabisat()
{
System.out.print("Program untuk menampilkan tahun kabisat");
System.out.print("\n");
}
}
public class MyClass {
public static void main() {
tahun_kabisat x = new tahun_kabisat();
x.kabisat();
System.out.print("\n");
}
}

Fungsi untuk menghitung jarak 2 titik

#include <iostream.h>

  class JARAK {
     private:
      float x1, x2, y1, y2;
      double hasil, a, b;
     public:
       void titik(){
         cout<<"masukkan nilai x1 :";
         cin>>x1;
         cout<<"masukkan nilai x2 :";
         cin>>x2;
         cout<<"masukkan nilai y1 :";
         cin>>y1;
         cout<<"masukkan nilai y2 :";
         cin>>y2;

         a = (x1-x2) * (x1-x2);
         b = (y1-y2) * (y1-y2);
         hasil = a + b;
         cout<<"hasil jarak dari 2 titik adalah :"<<hasil<<endl;
       }
     };
int main(){
    int x;
     JARAK J;
     J.titik();
    cin>>x;

        return 0;
}

mencari nilai KPK menggunakan Dev C++

#include <cstdlib>
#include <iostream>
                
using namespace std;

class kpk
{

public:
    void input();
   void output();
   void proses();

private:
    int a,b,c;
   int nilai;
};

  void kpk::input(){
    cout<<"Masukkan Nilai Bil A : "; cin>>a;
    cout<<"Masukkan Nilai Bil B : "; cin>>b;
   

  }
void kpk::proses(){
    
     int fpb;
     fpb = a%b;
     nilai = (a*b)/abs(fpb);
    
}

void kpk::output()
{
     proses();
    cout<<"KPK Antara "<<a<<" dan "<<b<<" Adalah "<<nilai<<endl;
   
}




int main(int argc, char *argv[])
{
   
    kpk bilangan;
   bilangan.input();
   bilangan.output();
    system("PAUSE");
    return EXIT_SUCCESS;
}

mencari volume bola & luas lingkaran menggunakan JELIOT

import jeliot.io.*;

public class MyClass {
    public static void main() {
        // Your algorithm goes here.

int r;
float volume;
System.out.print("masukan r = ");
r = Input.readInt();
volume= (float)((3.14*r*r*r*3)/4);
luas_lingkaran=(float)(3.14*r*r);
   System.out.print(volume);
}
}

Selasa, 12 April 2011

mencari volume bola & luas lingkaran

#include <cstdlib>
#include <iostream>
#include <conio.h>

using namespace std;

class hitung{
      friend ostream& operator<<(ostream&, const hitung&);
      friend istream& operator>>(istream&, hitung&);

public:
    
        void hitung_L_lingkaran();
        void hitung_V_bola();

        private:
                float r;
                float Phi;
                float luas;
                float volume;
                };


void hitung::hitung_L_lingkaran(){
    Phi=3.14;
    luas=Phi*r*r;
     }

void hitung::hitung_V_bola(){
          volume=1.33*3.14*r*r*r;
          }

istream& operator>>(istream& in, hitung& masukan){
                   
                   cout<<"Menghitung luas lingkaran.\n""\n";
                   cout<<"Masukan jari-jarinya lingkaran:";
                   in>>masukan.r;
                   cout<<"Menhitung volume bola.\n""\n";
                   cout<<"Masukan jari jari bola:";
                   in>>masukan.r;
                   return in;
                   }

ostream& operator<<(ostream& out, const hitung& keluaran){
                            out<<"jari-jari lingkaran:"<<keluaran.r<<endl;
                            out<<"jari-jari bola:"<<keluaran.r<<endl;                      
                            out<<"luas lingkaran:"<<keluaran.luas<<endl;
                            out<<"volume bola:"<<keluaran.volume<<endl;
                            return out;

Selasa, 29 Maret 2011

contoh program Algoritma

#include <iostream.h>
#include <conio.h>

void cetak_array(int A[], int n) {
    for (int i=0; i<n; i++)
        cout << "Nilai indeks ke-[" << i << "] adalah " << A[ i ] << endl;
    getch(); 
}

void main() {
    int A[10] = {1,2,3,4,5,6,7,8,9,10};
    int n = 10;
    cout << "Nilai array asal : ";
    cetak_array(A, n);
    cout << "Setelah dikurangi 1 menjadi : " << endl;
    for (int i=0; i<n; i++)
        cout << "Nilai indeks ke-[" << i << "] adalah " << A[ i ]-1 << endl;       
    getch();
    cout << "Nilai array dicetak kembali" << endl;
    cetak_array(A, n);
    cout << "Ternyata tidak berubah. Perhatikan perbedaannya " << endl;   
    for (int i=0; i<n; i++)
        cout << "Nilai indeks ke-[" << i << "] adalah " << A[ i ]-- << endl;       
    cout << "Nilai array dicetak kembali" << endl;
    cetak_array(A, n);
}

Senin, 21 Maret 2011

tugas kelompok

Algoritma Pengambilan Tabungan di Bank

Mengambil Uang di Bank
A. Pergi ke Bank dengan membawa buku tabungan
B. Ambil formulir penarikan tabungan
C. Isi formulir penarikan berdasarkan informasi dibuku tabungan
D. Isi Jumlah Nominal dengan angka
E. Isi Jumlah Nominal terbilang
F. Ambil nomor urut antrian
G. Menunggu Teller memanggil
H. Menyerahkan buku tabungan dan formulir penarikan
I. Teller menyerahkan uang dan buku tabungan
J. Selesai
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;
}

Kamis, 17 Maret 2011

Materi Algoritma

contoh program algoritma

contoh-program-algoritma

    #include<stdio.h>
    #include<graphics.h>

    void ikan(int,int,int,int);
    void setPixel(int,int);

    void main()
    {
    int x1,y1,x2,y2;
    int gd=DETECT,gm=0;
    initgraph(&gd,&gm,0);
    printf(“Masukkan koordinat titik x1 : \n “);
    scanf(“%d”,&x1);
    printf(“Masukkan koordinat titik y1: \n “);
    scanf(“%d”,&y1);
    printf(“Masukkan koordinat titik x2: \n”);
    scanf(“%d”,&x2);
    printf(“Masukkan koordinat titik y2: \n “);
    scanf(“%d”,&y2);
    initgraph(&gd,&gm,0);
    ikan(x1,y1,x2,y2);
    getch();
    closegraph();
    }

    void ikan(int x1,int y1,int x2,int y2)
    {
    int x,y;
    int dx, dy;
    int d;
    dy=y2-y1;
    dx=x2-x1;
    d = dx – 2 * dy;
    y = y1;
    for (x = x1; x <= x2; x++)
    {
    putpixel(x,y,4);
    if (d < 0)
    {
    y = y +1;
    d = d + 2*dx – 2*dy;
    }
    else
    {
    d = d – 2*dy;
    }
    }

    }

    void setPixel(int x,int y)
    {
    putpixel(x,y,4);
    }

Pentingnya Algoritma dalam Bahasa Pemrograman

Meskipun sudah dikatakan, bahwa sewaktu kita menyusun algoritma kita tidak perlu tahu bahasa pemrograman apa yang akan digunakan kelak, namun, untuk penulisan algoritma yang lebih efisien dan efektif, maka penggunaan sebagian perintah yang ada di dalam bahasa pemrograman perlu dilakukan juga.

Adapun perintah bahasa pemrograman yang paling sering digunakan untuk menyusun algoritma adalah bahasa pemrogrman yang terstrukutur, seperti Pascal, C, SNOBOL, PL/1, dan sebagainya.

Misalkan saja, untuk contoh berikut ini :

Langkah 1 : Beri nilai 10 ke variabel S
Maka, akan lebih mudah jika ditulis sebagai :
Langkah 1 : S := 10;

Belum lagi jika algoritma yang ditulis harus melakukan perulangan langkah ke langkah-langkah sebelumnya (looping).

10 Mulai I:= 1;
11 Lakukan perbandingan data ke I dengan data ke I+1
12 Jika data ke I+1 lebih kecil, maka tukar tempat keduanya
13 Tambahkan I dengan 1
14 Lakukan langkah 11 hingga langkah 13 selama nilai I < 10 15 selesai Tentu akan lebih ringkas jika kita tulis (perintah BASIC) : 10 For I= 1 to 10 20 If A(i) > A(I+1) then SWAP A(i), A(j)
30 next
40 end

Jadi terlihat, jika algoritma tersebut sederhana, maka penyusunan algoritma akan sama dengan penyusunan sebuah program (karena semua perintahnya sudah sesuai dengan kaidah penulisan di bahasa pemrogramannya). Apakah semuanya akan demikian ?.

Tentu saja tidak, misalkan, kita diminta untuk menentukan bilangan terkecil dari seratus buah bilangan yang akan dimasukkan ke komputer, ini masih dapat langsung dibuatkan programnya.

Algoritma (program)nya bisa kita susun sebagai berikut :
1 DIM A(100)
2 FOR M = 1 TO 100
3 INPUT A(M) : NEXT : KECIL = A(1)
4 FOR M = 2 TO 100
5 IF KECIL > A(M) THEN X = KECIL: KECIL = A(M) : A(M) = X
6 NEXT : PRINT KECIL : END

Tetapi, misalkan jika kita diminta untuk mengalihkan notasi infix menjadi postfix melalui stack, hal itu sulit untuk dilakukan. Algoritmanya bisa menggunakan gabungan kalimat dengan bahasa pemrograman, berikut contoh penggalannya.

Contoh :

1. Asumsi : deretan notasi infix dimasukkan ke dalam sebuah variabel array bernilai string, nama variabelnya D
2. S adalah variabel string untuk menyimpan susunan data di dalam stack
3. H adalah variabel string untuk menyimpan hasil
4. P = banyaknya elemen array
5. For I = 1 to p

If top(s) = empty then {top(s) adalah posisi atas stack)
if D(i) = operand then
H = D(i)
Else
S = S + D(i)
Top(s) = D(i)
Endif
Else
If D(i) = operator then
If derajat D(i) > derajat Top(s) then