Soal. Fungsi fibonacci dengan 2 cara rekrusif
Jawab :
Cara 1 :
fungsi fibonacci (input n : integer) : integer
Deskripsi :
if (n > 2) then
fibonacci ← fibonacci (n - 1) + fibonacci (n - 2)
else
fibonacci ← 1
end if
Program C++
#include <iostream>
using namespace std;
class hitung{
friend istream& operator>>(istream&, hitung&);
public :
int n;
cetak();
int fibonacci (int n){
if (n > 2){
return (fibonacci (n - 1)+fibonacci (n - 2));
}else{
return (1);
}
}
};
istream& operator>>(istream& in, hitung& input){
cout<<"masukkan batas fibonacci : ";
in>>input.n;
return in;
}
hitung::cetak(){
int i;
for(i=1; i<=n; i++){
cout<<" "<<fibonacci(i);
}
}
int main(){
hitung x;
cin>>x;
x.cetak();
return 0;
}
Hasil run :
Cara 2 :
fungsi fibonacci (input n, fib1, fib2 : integer) : integer
Deskripsi :
fib1 ← 0
fib2 ← 1
if (n = 0) then
fibonacci ← fib1
if (n = 1) then
fibonacci ← fib2
else
fibonacci ← fibonacci(n - 1, fib2, fib1 + fib2)
end if
Program C++
#include <iostream>
using namespace std;
class hitung{
friend istream& operator>>(istream&, hitung&);
public :
int n;
cetak();
int fibonacci(int n, int fib1=0, int fib2=1){
if (n==0){
return fib1;
}
if (n==1){
return fib2;
}else{
return fibonacci(n-1, fib2, fib1+fib2);
}
}
};
istream& operator>>(istream& in, hitung& input){
cout<<"masukkan batas fibonacci : ";
in>>input.n;
return in;
}
hitung::cetak(){
int i;
for(i=1; i<=n; i++){
cout<<" "<<fibonacci(i);
}
}
int main(){
hitung x;
cin>>x;
x.cetak();
return 0;
}
Hasil run :
Soal. Algoritma rekursif dari algoritma 5.3
Jawab :
Algoritma mencari_ratarata
{diberikan n data kemudian dicari rata-ratanya}
Deklarasi :
n, jumlah, x : integer
rata : real
Deskripsi :
read (n)
jumlah ← 0
function
rt (n : integer)
if (n = 0) then
return (n)
else
read (x)
jumlah ← jumlah + x
return (rt (n - 1))
end if
end function
rata ← jumlah / n
write (rata)
Program C++
#include<iostream>
using namespace std;
class hitung{
friend ostream& operator<<(ostream&, const hitung&);
friend istream& operator>>(istream&, hitung&);
public :
int jumlah=0;
int x, n;
float rata;
rt(int n);
outp();
};
istream& operator>>(istream& in, hitung& input){
cout<<"Masukkan n : ";
in>>input.n;
return in;
}
hitung::rt(int n){
if(n==0){
return(n);
}else{
cout<<"Masukkan x : ";
cin>>x;
jumlah+=x;
return(rt(n-1));
}
}
hitung::outp(){
rt(n);
rata=jumlah/n;
return rata;
}
ostream& operator<<(ostream& out, hitung& hasil){
cout<<"Rata-rata = "<<hasil.outp();
return out;
}
int main(){
hitung x;
cin>>x;
cout<<x;
return 0;
}
Hasil run :
Soal. Yang dilakukan pembeli dan kasir ketika mengambil barang belanjaan untuk menghitung berapa harga keseluruhan yang harus dibayar pembeli.
Jawab :
1. Konsep counter :
a. Pertambahan tetap barang belanja yang diambil oleh kasir untuk kemudian discan barcode perbarang.
Bukti : kasir akan mengambil barang yang tergeletak dimeja kasir satu per satu untuk discan.
2. Konsep total :
a. Pertambahan barang di meja kasir yang dikembalikan oleh pembeli dari keranjang belanja.
Bukti : saat pembeli mengeluarkan / mengambil barang belanjaan dan keranjang belanja dan kemudian diletakkan di meja kasir akan bertambah. Oleh karena pembeli mengeluarkan barang tidak hanya satu, namun bisa dua atau lebih, maka jumlah barang dimeja kasir bertambah dengan pertambahan yang tidak konsisten.
Langkah yang dilakukan saat belanja :
a. mulai : kondisi awal sebelum belanja
i. mengambil kereanjang belanja yang masih kosong
b. proses : kegiatan apa saja yang dilakukan saat belanja
memilih-milih barang yang ingin dibeli
mengambil barang yang akan dibeli
memasukkan barang tersebut ke dalam keranjang
menuju ke kasir untuk melakukan pembayaran
mengeluarkan barang belanjaan dari keranjang belanjaan ke meja kasir
c. akhir : berapa uang yang diserahkan ke kasir, berapa jumlah barang yang dibeli beserta jumlah uang yang harus dibayar dan uang kembalian (jika ada)
membayar total hargra barang belanjaan ke kasir
mengambil uang kembalian belanja
mengambil barang belanjaan
Comments