Rabu, 30 Oktober 2013

Aplikasi Kalkulator Sederhana 4 (Rekursif)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
float Kali(float bil1, float bil2), Tambah(float bil1, float bil2), Bagi(float bil1, float bil2), Kurang(float bil1, float bil2), hasilKali, hasilTambah, hasilBagi, hasilKurang, Pangkat(float bil1, float bil2), Faktorial(float bil1);
int main(){
    struct psd
    {
            char NIM[10];
            char Nama[20];
            char password1[10];
            char password2[10];
    }psd;
                       
                      
                        int pilihan, pilihan2;
                        float a,b;

int benar=1,salah=0,nama1,nama2;
while (benar == 1)
{
       printf ("Password 1 :  ");
       gets(psd.password1);
    printf ("Password 2 :  ");
       gets(psd.password2);
    nama1=strcmp(psd.password1,"Evi");
       nama2=strcmp(psd.password2,"Septiyani");

       if (nama1==0 && nama2==0)
       {
              printf ("=======Login Berhasil======\n\n",psd.password1,psd.password2);
              benar = 1;
     

                       
                         printf("Nama : ");
                         gets(psd.Nama);
                         printf("NIM : ");
                         gets(psd.NIM);

                         printf("\n\nSelamat Datang %s",psd.Nama);
                         printf(" dengan NIM %s\n\n",psd.NIM);

                        atas:
                         printf("********************************************\n");
                         printf("*             Evi's Kalkulator             *\n");
                         printf("********************************************\n\n");
                         printf("1.Operasi Perkalian\n");
                         printf("2.Operasi Penjumlahan\n");
                         printf("3.Operasi Pembagian\n");
                         printf("4.Operasi Pengurangan\n");
        printf("5.Operasi Pemangkatan\n");
        printf("6.Operasi Faktorial\n\n");
                         printf("Pilih salah satu operasi di atas : ");
                         scanf_s("%d",&pilihan);
                         printf("\n");
                         printf("********************************************\n\n\n");
                      

                         switch(pilihan)
                        {
                         case 1 :
                         printf("Perkalian bilangan \n\n");
                         printf("Masukan bilangan pertama      : ");
                         scanf_s("%f",&a);
                         printf("Masukan bilangan kedua        : ");
                         scanf_s("%f",&b);
                         printf("\n");
                         printf("Hasil perkaliannya adalah  : %f\n",Kali(a,b));
                         break;
                         case 2 :
                         printf("Penjumlahan bilangan \n\n");
                         printf("Masukan bilangan pertama       : ");
                         scanf_s("%f",&a);
                         printf("Masukan bilangan kedua         : ");
                         scanf_s("%f",&b);
                         printf("\n");
                         printf("Hasil penjumlahannya adalah : %f\n",Tambah(a,b));
                         break;
                         case 3 :
                         printf("Pembagian bilangan \n\n");
                         printf("Masukan bilangan pertama      : ");
                         scanf_s("%f",&a);
                         printf("Masukan bilangan kedua        : ");
                         scanf_s("%f",&b);
                         printf("\n");
                         printf("Hasil pembagiannya adalah  : %f\n",Bagi(a,b));
                         break;
                         case 4 :
                         printf("Pengurangan bilangan \n\n");
                         printf("Masukan bilangan pertama       : ");
                         scanf_s("%f",&a);
                         printf("Masukan bilangan kedua         : ");
                         scanf_s("%f",&b);
                         printf("\n");
                         printf("Hasil pengurangannya adalah : %f\n",Kurang(a,b));
                         break;
                         case 5 :
                         printf("Pemangkatan bilangan \n\n");
                         printf("Masukan bilangan yang dipangkatkan       : ");
                         scanf_s("%f",&a);
                         printf("Masukan pangkat        : ");
                         scanf_s("%f",&b);
                         printf("\n");
                         printf("Hasil pemangkatannya adalah : %f\n",Pangkat(a,b));
                         case 6 :
                         printf("Pemangkatan bilangan \n\n");
                         printf("Masukan bilangan bulat positif       : ");
                         scanf_s("%f",&a);
                         printf("\n");
                         printf("Hasil faktorialnya adalah : %f\n",Faktorial(a));
                         break;

                         default : printf("Anda Tidak Menginputkan Perintah Operasi Apapun");
                         }
      
                         printf("\n\nApakah Anda Ingin Keluar?");
                         printf("\n1. Tidak\n");
                         printf("2. Ya\n");
                         scanf_s("%d",&pilihan2);
                        if(pilihan2==1)                
                        {    goto atas;
                        return(0);
                        }
                        else{
                        salah = 0;
                     break;
                        }
                                                         }
       else
       {
              if (salah == 3)
              {
                     printf("Akses Ditolak\n");
                     salah = 0;
                     break;
              }
        else
              {
                     printf("Password Salah\n\n");
                     salah++;
              }
       }
      
}
           }
float Kali(float bil1,float bil2)
{
    hasilKali= bil1*bil2;
    return hasilKali;
}
float Tambah(float bil1,float bil2)
{
    hasilTambah= bil1+bil2;
    return hasilTambah;
}
float Bagi(float bil1,float bil2)
{
    hasilBagi= bil1/bil2;
    return hasilBagi;
}
float Kurang(float bil1,float bil2)
{
    hasilKurang= bil1-bil2;
    return hasilKurang;
}
float Pangkat(float bil1, float bil2){
       if (bil2 == 0)
              return 1;
       else
              return bil1 * Pangkat(bil1,bil2-1);
}
float Faktorial(float bil1)
{
if (bil1==0)
return 1;
else
return bil1*Faktorial(bil1-1);
}



Program ini mengenai aplikasi kalkulator sederhana yaitu kalkulator yang hanya terdiri 4 operasi dasar perhitungan yaitu perkalian, penjumlahan, pembagian, dan pengurangan, namun sekarang ditambahkan operasi pemangkatan dan faktorial.
Di sini digunakan sistem switch case saat melakukan pemilihan operasi perhitungan misalnya saat pemilihan operasi perhitungan perkalian, maka user akan menginputkan angka 1 untuk melakukan operasi perhitungan. Maka akan muncul untuk menginputkan bilangan 1 dan 2, saat di enter maka hasil dari operasi perkalian 2 bilangan tersebut akan muncul. Kemudian selesainya perhitungan akan muncul juga pertanyaan “Apakah Anda Ingin Keluar?” Apabila Tidak, maka aplikasi akan dijalankan kembali atau maksudnya kembali ke program awal, sedangkan Ya, maka akan keluar dari aplikasi. Perbedaan dengan yang sebelumnya setelah pemakaian fungsi yang saat itu switch case di atas hanya untuk menginputkan data serta menampilkan hasil operasi, sedangkan untuk fungsi berhubung ada diluar dari fungsi main, jadi caranya yaitu dengan memanggil fungsi tersebut. Kali ini ditambahkan fungsi login, dengan menginputkan password1 dan 2 dengan menggunakan string yang dideklarasikan menggunakan fungsi struct dan juga menggunakan array. Selain itu, juga dibuat fungsi rekursif faktorial dan pemngkatan. Jadi pada saat user memilih operasi pemangkatan atau faktorial maka akan dijalankan fungsi rekursif pada fungsi diluar int main.

 Untuk lebih jelasnya bisa dilihat melalui video yang terdapat pada link ini http://youtu.be/G0KTqcX04Zs

Semangaaaaaat :) ^^

Tidak ada komentar:

Posting Komentar