Operasi kalkulator sederhana dengan C

Berikut ini adalah kode program C untuk operasi kalkulator sederhana meliputi: penjumlahan, perkalian, pembagian, modulo, pangkat, faktorial, eksponen, dan cosinus. Program ini dibuat dengan menggunakan tools CodeBlocks. Simpan file dalam ekstensi *.c.

/*
IDENTIFIKASI MASALAH
Membuat kalkulator sederhana untuk menghitung operasi matematika meliputi:
1. Penjumlahan
2. Perkalian
3. Pembagian
4. Modulo
5. Pangkat
6. Faktorial
7. Eksponen
8. Cosinus
ANALISIS
Input:
- penjumlahan, perkalian, pembagian, modulo:
bilangan ke-1 dan bilangan ke-2; nama variabel: bil1 dan bil2
tipe data: float,
- pangkat
bilangan-1 (yang dipangkatkan) dan bilangan-2(pangkat bilangan); nama variabel:bil1 dan bil2
tipe data: float
- faktorial
bilangan-1 (yang akan dihitung faktorial-nya); nama variabel: bil1
tipe data: float
- eksponen
- bilangan-1 yang akan dihitung nilai eksponennya; nama variabel: bil1; tipe data: float
- iterasi yang dilakukan; nama variabel: iter; tipe data: float
- cosinus
- bilangan yang akan dihitung nilai cos-nya (berupa inputan derajat); nama variabel: xdeg; tipe data: float
- bilangan hasil konversi dari degree ke radian; nama variabel: xrad; tipe data: float
- iterasi yang dilakukan; nama variabel: iter; tipe data: float

Proses
- penjumlahan
- input bilangan 1 dan 2
- hitung hasil penjumlahan dengan rumus : bil1 + bil2
- tampilkan hasil penjumlahan
- perkalian
- input bilangan 1 dan 2
- hitung hasil perkalian dengan rumus : bil1 * bil2
- tampilkan hasil perkalian
- pembagian
- input bilangan 1 dan 2
- hitung hasil pembagian dengan rumus : bil1 / bil2
- tampilkan hasil pembagian
- modulo
- input bilangan 1 dan 2
- hitung hasil perhitungan modulo dengan rumus : bil1 % bil2
- tampilkan hasil perhitungan modulo
- pangkat
- input bilangan yang akan dipangkatkan
- input pangkat
- hitung nilai pangkat dengan rumus: bil1^bil2
- tampilkan hasil pangkat
- faktorial
- input bilangan
- hitung hasil faktorial dengan rumus: n! = 1 * 2 * 3 * ... * (n-1) * n
- tampilkan hasil faktorial
- eksponen
Rumus : e^x = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ... + x^n/n!
Proses:
- Definisikan batas iterasi (iter)
- input bilangan (bil1)
- hitung bil1^n
- hitung faktorial dari bilangan: bil1!
- hitung result, yaitu hasil pembagian x^2/n!
- jumlahkan hasil result sebelumnya dengan result sekarang
- Lakukan iterasi untuk nilai n berikutnya sampai dengan batas iterasi
- Tampilkan hasil eksponen

- cosinus
- Definisikan batas iterasi (iter)
- Definisikan nilai pi = 3,1415927
- Inputkan bilangan (derajat) yang akan dihitung nilai cosnya
- konversi bilangan derajat menjadi radian dengan rumus: radian = derajat*(pi/180)
- hitung nilai cosinus dengan rumus:
cos x = x - x^2/2! + x^4/4! - x^6/6! + ...
= (E (-1)^n/(2n)!) * x^2n--->E = sigma (penjumlahan)
- tampilkan hasil cosinus

Output:
Output ditampilkan sesuai dengan operasi yang dipilih oleh user
- hasil penjumlahan, perkalian, pembagian, modulo, pangkat, faktorial; nama variabel: hasil; tipe data: float
- hasil eksponen; nama variabel: ex; tipe data: float
- hasil cosinus; nama variabel: cos; tipe data: float

- Desain algoritma:
- Program menampilkan pilihan operasi
- user memilih operasi
- jika operasi yang dipilih adalah operasi penjumlahan, perkalian, pembagian, modulo, pangkat, faktorial, eksponen, cosinus:
program melakukan operasi sesuai pilihan operasi dari user dan menampilkan hasil perhitungan
- jika input pilihan operasi tidak ada, program menampilkan peringatan dan menampilkan kembali pilihan operasi
- jika operasi yang dipilih adalah keluar, program mengakhiri program kalkulator dan dapat keluar dari jendela command prompt

*/

#define iterasi 20; // definisi iterasi yang dilakukan
#define pi 3,1415927; // definisi nilai pi

#include

/* Prototype Fungsi*/
float jumlah(float,float); //menghitung penjumlahan
float kali(float,float); //menghitung perkalian
float bagi(float,float); //menghitung pembagian
int modulo(int,int); //menghitung modulo
float hitungpangkat(float,float); //menghitung pangkat
float hitungfaktorial(float); //menghitung faktorial

int main(void)
{
//Deklarasi variabel
float bil1,bil2; // menampung inputan bilangan dari user
float hasil; // menampung hasil operasi penjumlahan, perkalian, pembagian, modulo, pangkat, dan faktorial
int operasi; // jenis operasi yang dilakukan
int iter; // untuk iterasi pada eksponen dan cosinus
float phi; // menampung nilai pi
float hasilpangkat; // menampung hasil pangkat
float hasilfaktorial; // menghitung hasil faktorial
float result; // menampung hasil pembagian hasil pangkat/hasil faktorial pada eksponen
float xdeg; // menampung inputan derajat
float xrad; // menampung konversi dari derajat ke radian
float ex; // menampung hasil eksponen
float cos; // menampung hasil cosinus

int n; // untuk iterasi perhitungan eksponen

ex = 0; // inisialiasi nilai eksponen
cos = 0; // inisialiasi nilai cosinus
iter = iterasi; // assign nilai dari define iterasi
phi = pi; // assign nilai dari define pi

while(1)
{
/* Menampilkan pilihan operasi yang dilakukan */
printf("PROGRAM KALKULATOR OPERASI MATEKAMATIKA SEDERHANA ");
printf("\n\nPilih Jenis Operasi yang dilakukan: ");
printf("\n1. Penjumlahan ");
printf("\n2. Perkalian ");
printf("\n3. Pembagian ");
printf("\n4. Modulo ");
printf("\n5. Pangkat ");
printf("\n6. Faktorial ");
printf("\n7. Eksponen ");
printf("\n8. Cosinus");
printf("\n9. Keluar dari layar");
printf("\nPilih jenis operasi yang akan dilakukan: ");
scanf("%d",&operasi);
printf("\nOperasi yang dipilih adalah: %d\n",operasi);

if (operasi==1||operasi==2||operasi==3||operasi==4) //untuk operasi penjumlah, perkalian, pembagian, dan modulo disatukan karena punya 2 input bilangan
{
/* start of input bilangan */
printf("\nMasukkan bilangan pertama: ");
scanf("%f",&bil1);
printf("\nMasukkan bilangan kedua: ");
scanf("%f",&bil2);
/* end of input bilangan */

switch (operasi)
{
case 1: // jika pilihan = 1, lakukan operasi penjumlahan dengan rumus bil1+bil2
hasil = jumlah(bil1,bil2); // operasi penjumlahan
printf("\n%.2f + %.2f = %.2f\n\n",bil1,bil2,hasil); //tampilkan hasil penjumalahn
break;
case 2: // jika pilihan = 2, lakukan operasi penjumlahan dengan rumus bil1 * bil2
hasil = kali(bil1,bil2); // operasi perkalian
printf("\n%.2f * %.2f = %.2f\n\n",bil1,bil2,hasil); // tampilkan hasil perkalian
break;
case 3: // jika pilihan = 3, lakukan operasi penjumlahan dengan rumus bil1 / bil2
hasil = bagi(bil1,bil2); // operasi pembagian
printf("\n%.2f / %.2f = %.2f\n\n",bil1,bil2,hasil); // tampilkan hasil pembagian
break;
case 4: // jika pilihan = 4, lakukan operasi modulo dengna rumus bil1 % bil2
hasil = modulo((int)bil1,(int)bil2); // operasi modulo
printf("\n%.2f mod %.2f = %.2f\n\n",bil1,bil2,hasil); // tampilkan hasil modulo
break;
}

}
else if (operasi==5) // jika pilihan = 5, lakukan operasi pangkat dengan rumus bil^n
{
printf("\nMasukkan bilangan: "); // input bilangan yang akan dipangkatkan
scanf("%f",&bil1);
printf("\nMasukkan pangkat: "); // input pangkat
scanf("%f",&bil2);
hasil = hitungpangkat(bil1,bil2); // operasi pangkat
printf("\n%.2f ^ %.2f = %.2f\n\n",bil1,bil2,hasil); // tampilkan hasil pangkat
}
else if (operasi==6) // jika pilihan = 6, lakukan operasi faktorial
{
printf("\nMasukkan bilangan: "); // input bilangan yang akan dicari nilai faktorialnya
scanf("%f",&bil1);
hasil = hitungfaktorial(bil1); // operasi perhitungan faktorial
printf("\n%.0f!= %.2f\n\n",bil1,hasil); // tampilkan hasil perhitungan faktorial
}
else if (operasi==7) // jika pilihan = 7, lakukan operasi eksponensial
{
printf("\nMasukkan bilangan: "); // input bilangan
scanf("%f",&bil1);
for (n=0;n<=iter;n++) // iterasi untuk menghitung nilai eksponensial
{
hasilpangkat = hitungpangkat(bil1,n); // menghitung nilai pangkat : x^n
hasilfaktorial = hitungfaktorial(n); // menghitung nilai faktorial: n!
result = hasilpangkat / hasilfaktorial; // menghitung nilai x^n/n!
ex=ex + result; // menghitung eksponensial (result sebelumnya dijumlahkah dengan result sekarang)
}
printf("\nExp(%.2f) = %.2f\n\n",bil1,ex); // tampilkan hasil eksponensial
ex = 0; // mengenolkan kembali nilai eksponensial agar pada operasi berikutnya tidak terakumulasi dengan hasil operasi sebelumnya
}
else if (operasi==8) // jika pilihan = 8, lakukan operasi perhitungan cosinus dari suatu derajat
{
printf("\nMasukkan besaran derajat: "); // input derajat
scanf("%f",&xdeg);

//tes tampilan input derajat
//printf("\nBesaran derajat : %f",xdeg);

xrad = xdeg*(phi/180); //konversi dari derajat ke radian

//tes print hasil konversi derajat ke radian
//printf("\nNilai x(%.3f derajat) dalam radian adalah: %.1f",xdeg,xrad);

/*start of perhitungan cosinus */
for (n=0;n<iter;n++){
if((n%2)==0) // jika n genap, nilai pada iterasi sekarang ditambahkan dengan akumulasi nilai cos pada iterasi sebelumnya
{
cos = cos + hitungpangkat(xrad,(2*n))/hitungfaktorial(2*n);
}
else // jika n ganjil, nilai pada iterasi sekarang dikurangkan dengan akumulasi nilai cos pada iterasi sebelumnya
{
cos = cos - hitungpangkat(xrad,2*n)/hitungfaktorial(2*n);
}
/*end of perhitungan cosinus */
}
printf("\nCos %.2f= %.2f\n\n",xdeg,cos); // menampilkan hasil perhitungan cosinus
cos = 0; // mengenolkan kembali nilai cos agar nilai cos pada perhitungan saat ini tidak terakumulasi pada perhitungan selanjutnya
}
else if (operasi==9) // jika pilihan = 9, keluar dari kalkulator
{
break;
}
else // jika pilihan selain 1-9, muncul peringatan salah input pilihan dan menampilkan kembali pilihan operasi
{
printf("\nPeringatan: Pilihan operasi yang diinput tidak ada\n\n");
continue;
}

}

return 0;
}

//fungsi penjumlahan
float jumlah(float x,float y)
{
float hasil;
hasil = x + y;
return hasil;
}

//fungsi perkalian
float kali(float x,float y)
{
float hasil;
hasil = x * y;
return hasil;
}

//fungsi pembagian
float bagi(float x,float y)
{
float hasil;
hasil = x / y;
return hasil;
}

//fungsi modulo
int modulo (int x,int y)
{
int hasil;
hasil = x % y;
return hasil;
}

// fungsi hitung pangkat
float hitungpangkat(float x,float n)
{
float hasilpangkat = 1; // inisialisasi hasil x^n
float i; // counter/iterasi
/* start of perhitungan x^n */
for (i=1;i<=n;i++) { hasilpangkat=hasilpangkat*x; } /* end of perhitungan x^n */ return hasilpangkat; // mengembalikan hasil x^n } // fungsi hitung faktorial float hitungfaktorial(float n) { float hasilfaktorial = 1; // inisialisasi hasil faktorial float i; // counter/iterasi /* start of perhitungan n! */ for(i=n;i>=1;i--)
{
hasilfaktorial = hasilfaktorial * i;
}
/* end of perhitungan n! */

return hasilfaktorial;
}

suichal signature

Leave a Reply

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

WordPress.com Logo

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

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s