saya pernah dapat tugas pada matakuliah Struktur data untuk membuat program mencari hasil nilai pangkat. misalnya 32 = 9.
nah untuk mencari nilai pangkat ada 2 metode yang bisa digunakan.
1. metode iterasi (perulangan)
2. Rekursif (fungsi)
berikut contoh program yang ditulis dengan menggunakan C++.
Iterasi
pada iterasi kita menggunakan perulangan untuk mencari hasilnya. perhatikan coding berikut.
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
int main () {
printf("Program Iterasi Perpangkatan \n\n");
int x,a,hasil;
printf ("masukkan nilai x = "); scanf("%d",&x);
printf("masukkan nilai a = "); scanf("%d", &a);
for (int i=0; i<a; i++)
hasil= x*x;
cout<<"hasil pemangkatan "<<x <<"^" <<a <<" = " <<hasil;
}
pada coding yang di beri warna merah merupakan iterasi/perulangan yang beefungsi untuk mencari nailai pemangkatan. dimana x merupakan nilai variabel dan a merupakan pangkatnya. Xa
nah kemudian diatas dapat kita lihat untuk menampilkan text menggunakan printf dan meminta input dengan perintah scanf. yang mana anda juga bisa menggunakan fungsi cout<< dan cin>>. pada printf dan scanf (agak ribet) mesti mengunakan code seperti %d setiap ada variabel yang ingin digunakan contoh scanf("%d",&x);
berikut list code untuk variabel lain float, string dll.
Simbol | Output | Contoh |
---|---|---|
c | Character | a |
d or i | untuk decimal atau integer | 392 |
f | untuk Decimal yang type data | 392.65 |
o | untuk octal | 610 |
s | String of characters | sample |
Rekursif
pada iterasi kita menggunakan fungsi yang memanggil dirinya sendiri untuk mencari hasilnya sampai memenuhi kondisi. perhatikan coding berikut.
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
int pangkat (int j, int k) { //membuat function/fungsi pangkat
int hasil;
if (k==0) { hasil=1; }
else {
hasil =j*pangkat(j,k-1);
}
return(hasil);
}
int main(){ //program utama
printf("Program Iterasi Perpangkatan \n\n");
int x,a,hasil;
printf ("masukkan nilai x = "); scanf("%d",&x);
printf("masukkan nilai a = "); scanf("%d", &a);
cout<<"hasil pemangkatan "<<x <<"^" <<a <<" = " <<pangkat(x,a);
}
Yang paling penting adalah fungsi pangkat yang diwarnai merah
Fungsi ini digunakan mencari hasil pemangkatan,
penjelasan coding
int hasil; (digunakan untuk menampung hasil dari pemangkatan)
if (k==0) { hasil=1; } jika k =0 maka hasilnya pemangkatannya 1, j0 =1
else {
hasil =j*pangkat(j,k-1); } jika k =bukan 0 misalnya 3 (33) maka hasilnya 3*pangkat(3,2) nah nilai k nya masih 2 (belum 0) maka akan di lakukan pemanggilan fungsi pangkat sampai nilai k nya 0 (bingung ya -_-)
jadi nanti bentuk proses pencariannya begini
pangkat(3,3) = 3*pangkat(3,2)= 3*3*pangkat(3,1)= 3*3*3 pangkat(3,0)= 3*3*3*1
(mudah2an gak bingung lagi ^_^)
Dan terakhir
return(hasil); untuh menampilkan hasil dari pemangkatan yang di letakkan pada variabel hasil.
2 comments:
saya masih bingung mas kalo ditambahkan
hasil = x + pangkat(x,i-1);
kenapa hasilnya 10 ya?
iterasinya engk jalan dengan baik....
bagian perpangkatan jadi perkalian nilai x...
trus syntax " using namespace std; " terbaca error...
mohon dkonfirmasi...
:)
Post a Comment