Jumat, 08 April 2016
Kamis, 07 April 2016
DIKTAT BAB 5
BAB 5
PERULANGAN/ LOOP
PERULANGAN/ LOOP
latihan hal 110
11. cetaklah bilangan 1 sampai dengan 4 menggunakan downto
Algoritma menceteak bilanagn 1 sampai 4
{langsung mencetak bilanagn 1 sampai 4}
Deklarasi b=integer
b<1
repeat
b<=4
b++
write(b) algoritma ?
1.
Algoritam menentukan hari
{masukkan integer 1 sampai 7, akan
ditentukan hari apa yang sesuai}
Deklarasi hari= integer;
Deskripsi
read(hari);
case(hari) of
1:hari<-'senin';
2:hari<-'selasa';
3:hari<-'rabu';
4:hari<-'kamis';
5:hari<-'jumat';
6:hari<-'sabtu';
else hari<-'minggu';
endcase
write(hari)3.
Buatlah algoritma dan program untuk mencetak bilangan yang habis dibagi 3 dan 5
antara 1 sampai dengan 100.
4. Hitunglah nilai dari :
5. Buatlah algoritma dan program untuk menghitung nilai dari permutasi dan kombinasi n
buah bola yang diambil r bola.
Petunjuk :
Rumus permutasi dan kombinasi adalah sebagai berikut :
buah bola yang diambil r bola.
Petunjuk :
Rumus permutasi dan kombinasi adalah sebagai berikut :
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
/* Algoritma 5
1. Deklarasi
hasil,n,k : integer
proses[2],yesno[2]; character
2. Deskripsi
Read(n,k)
if(n<k)
then write("Nilai n tidak boleh lebih kecil dari k")
else
write"(Pilih P (permutasi) atau C (kombinasi))"
if(proses[0]=='p' || proses[0]=='P')
hasil = faktorial(n)/faktorial(n-k);
then write("\n \n")
then write(n,"P",k," : ",hasil)
else if (proses[0]=='c' || proses[0]=='C')
hasil = faktorial(n)/(faktorial(k) * faktorial(n-k));
then write("\n \n")
then write(n,"C",k," : ",hasil)
else
then write("\n\tAnda tidak memilih P atau C")
then write("\n\tIngin mengulang? <y/n> ")
Read(yesno[0])
if (yesno[0]=='Y'||yesno[0]=='y')
Y=1
else if (yesno[0]=='N'||yesno[0]=='n'||yesno[0]!='Y'||yesno[0]!='y')
Y=0
Kelompok 4=1500018161*/
int faktorial(int N);
int main(void)
{
int hasil;
int n,k, Y=1;
char proses[2];
char yesno[2];
while(Y) {
cout<<"\tMasukkan nilai n : ";
cin>>n;
cout<<"\tMasukkan nilai k : ";
cin>>k;
if(n<k){
cout<<"\tNilai n tidak boleh lebih kecil dari k\n";
}
else
{
cout<<"\tPilih P (permutasi) atau C (kombinasi) : ";
cin>>proses[0];
if (proses[0]=='p' || proses[0]=='P')
{
hasil = faktorial(n)/faktorial(n-k);
cout<<"\n \n";
cout<<n<<"P"<<k<<" : "<<hasil;
}
else if (proses[0]=='c' || proses[0]=='C')
{
hasil = faktorial(n)/(faktorial(k) * faktorial(n-k));
cout<<"\n \n";
cout<<n<<"C"<<k<<" : "<<hasil;
}
else
cout<<"\n\tAnda tidak memilih P atau C";
cout<<"\n\tIngin mengulang? <y/n> ";
cin>>yesno[0];
if (yesno[0]=='Y'||yesno[0]=='y')
Y=1;
else if (yesno[0]=='N'||yesno[0]=='n'||yesno[0]!='Y'||yesno[0]!='y')
Y=0;
}
}
}
int faktorial(int N)
{
int F;
if (N<=1)
{
return(1);
}
else
{
F = N * faktorial(N-1);
return(F);
}
}
Pemutasi
combinasi
6. Buatlah algoritma dan program untuk mengkonversi bilangan desimal menjadi bilangan
biner. Petunjuk : Gunakan operator mod dan div !
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
/* Algoritma 6
1. Deklarasi
desimal, pembagi, bit : long
pembagi=1073741824
3. Deskripsi
Read(desimal)
while(pembagi>desimal)pembagi/=2
do
bit=desimal/pembagi
then write(bit)
desimal=desimal%pembagi
pembagi/=2;
while(pembagi>=1)
write("\n")
Kelompok 4=1500018161 */
int main(int argc, char** argv) {
long desimal, pembagi, bit;
pembagi=1073741824;
cout<<"\t\t Program Konversi Bilangan Desimal ke Biner"<<endl<<endl;
cout<<" Masukan bilangan desimal : ";
cin>>desimal;
while(pembagi>desimal)pembagi/=2;
do{
bit=desimal/pembagi;
cout<<bit;
desimal=desimal%pembagi;
pembagi/=2;
}
while(pembagi>=1);
cout<<"\n";
return 0;
}
biner. Petunjuk : Gunakan operator mod dan div !
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
/* Algoritma 6
1. Deklarasi
desimal, pembagi, bit : long
pembagi=1073741824
3. Deskripsi
Read(desimal)
while(pembagi>desimal)pembagi/=2
do
bit=desimal/pembagi
then write(bit)
desimal=desimal%pembagi
pembagi/=2;
while(pembagi>=1)
write("\n")
Kelompok 4=1500018161 */
int main(int argc, char** argv) {
long desimal, pembagi, bit;
pembagi=1073741824;
cout<<"\t\t Program Konversi Bilangan Desimal ke Biner"<<endl<<endl;
cout<<" Masukan bilangan desimal : ";
cin>>desimal;
while(pembagi>desimal)pembagi/=2;
do{
bit=desimal/pembagi;
cout<<bit;
desimal=desimal%pembagi;
pembagi/=2;
}
while(pembagi>=1);
cout<<"\n";
return 0;
}
. Buatlah algoritma, flowchart dan program untuk menampilkan permutasi dari 3 huruf.
Misalnya diberikan : abc
output :
abc
bca
bac, dan seterusnya
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void masuk(char a[50]);
void keluar(char b[50]);
void identitas();
int main()
{
char kata[50];
cout<<"\nPermutasi dari tiga huruf"<<endl;
masuk(kata);
keluar(kata);;
getch();
}
void masuk(char a[50]){
cout<<"\nMasukkan Kata : ";
gets(a);
cout<<endl;
}
void keluar(char b[50]){
cout<<"\nHasil Pembalikkan kata :";
for(int a=strlen(b);a>=0;a--)
{
cout<<b[a];
}
cout<<endl;
}
LATIHAN Hal 120-121
Misalnya diberikan : abc
output :
abc
bca
bac, dan seterusnya
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void masuk(char a[50]);
void keluar(char b[50]);
void identitas();
int main()
{
char kata[50];
cout<<"\nPermutasi dari tiga huruf"<<endl;
masuk(kata);
keluar(kata);;
getch();
}
void masuk(char a[50]){
cout<<"\nMasukkan Kata : ";
gets(a);
cout<<endl;
}
void keluar(char b[50]){
cout<<"\nHasil Pembalikkan kata :";
for(int a=strlen(b);a>=0;a--)
{
cout<<b[a];
}
cout<<endl;
}
LATIHAN Hal 120-121
1. 1. Buatlah fungsi fibonacci dengan cara iteratif.
#include <iostream>
using namespace std;
int iteratif (int suku, int a, int b, int c)
{
a=0, b=1;
if (suku == 1) return b;
if (suku == 0) return a;
else{
for(int i=2; i<=suku; i++){
c = a + b;
a = b;
b = c;
}
return c;
}
}
int main()
{
int suku, a, b,c;
cout<<"Masukkan nilai suku ke-: ";
cin>>suku;
cout<<"\nBilangan fibonaccinya untuk "<<suku<<" adalah ";
cout<< iteratif ( suku, a, b, c);
return 0;
}
using namespace std;
int iteratif (int suku, int a, int b, int c)
{
a=0, b=1;
if (suku == 1) return b;
if (suku == 0) return a;
else{
for(int i=2; i<=suku; i++){
c = a + b;
a = b;
b = c;
}
return c;
}
}
int main()
{
int suku, a, b,c;
cout<<"Masukkan nilai suku ke-: ";
cin>>suku;
cout<<"\nBilangan fibonaccinya untuk "<<suku<<" adalah ";
cout<< iteratif ( suku, a, b, c);
return 0;
}
2. Buatlah fungsi fibonacci dengan 2 cara rekursif yang lain.
#include <iostream>
using namespace std;
int nextTerm(int n){
int firstTerm = 0, secondTerm = 1;
int nextTerm;
cout << "Fibonacci Series: " << firstTerm << " " << secondTerm << " ";
for (int i = 1; i <= n-2; ++i) {
nextTerm = firstTerm + secondTerm;
cout<<nextTerm << " ";
firstTerm = secondTerm;
secondTerm = nextTerm;
}
}
int main() {
int n;
cout << "Enter number of terms: ";
cin >> n;
nextTerm(n);
return 0;
}
using namespace std;
int nextTerm(int n){
int firstTerm = 0, secondTerm = 1;
int nextTerm;
cout << "Fibonacci Series: " << firstTerm << " " << secondTerm << " ";
for (int i = 1; i <= n-2; ++i) {
nextTerm = firstTerm + secondTerm;
cout<<nextTerm << " ";
firstTerm = secondTerm;
secondTerm = nextTerm;
}
}
int main() {
int n;
cout << "Enter number of terms: ";
cin >> n;
nextTerm(n);
return 0;
}
3. Algoritma perkalian dengan cara penjumlahan pada algoritma 5.3. belum sempurna
karena belum mencakup semua kemungkinan, misalnya untuk harga b negatif. Buatlah
fungsi perkalian dengan cara penjumlahan dengan menyempurnakan algoritma 5.3. di atas
karena belum mencakup semua kemungkinan, misalnya untuk harga b negatif. Buatlah
fungsi perkalian dengan cara penjumlahan dengan menyempurnakan algoritma 5.3. di atas
#include <iostream>
#include <math.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
int a,b,i,jumlah=0;
cout<<"Menghitung Perkalian dengan Penjumlahan"<<endl;
cout<<"Masukan Nilai pertama = ";cin>>a;
cout<<"Masukan Nilai Kedua = ";cin>>b;
if (a>0 && a<0 || b>0){
for(i=1;i<=b;i++)
jumlah+=a;
cout<<a<<"x"<<b<<"="<<jumlah;
}else if(b<0 && a<0){
for(i=0;i>a;i--)
jumlah-=b;
cout<<a<<"x"<<b<<"="<<jumlah;
}else{
for(i=1;i<=a;i++)
jumlah+=b;
cout<<a<<"x"<<b<<"="<<jumlah;
}
return 0;
}
#include <math.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
int a,b,i,jumlah=0;
cout<<"Menghitung Perkalian dengan Penjumlahan"<<endl;
cout<<"Masukan Nilai pertama = ";cin>>a;
cout<<"Masukan Nilai Kedua = ";cin>>b;
if (a>0 && a<0 || b>0){
for(i=1;i<=b;i++)
jumlah+=a;
cout<<a<<"x"<<b<<"="<<jumlah;
}else if(b<0 && a<0){
for(i=0;i>a;i--)
jumlah-=b;
cout<<a<<"x"<<b<<"="<<jumlah;
}else{
for(i=1;i<=a;i++)
jumlah+=b;
cout<<a<<"x"<<b<<"="<<jumlah;
}
return 0;
}
4. Buatlah algoritma rekursif dari algoritma 5.3
5. Diberikan suatu bilangan bulat positif. Cetaklah bilangan bulat tersebut secara terbalik,
secara iteratif maupun rekursif.
secara iteratif maupun rekursif.
#include"iostream"
using
namespace std;
class
perulangan{
public
:
perulangan()
{int i=0;}
void
balik_while(int);
void
balik_iteratif(int);
void
balik_rekursif(int);
private
:
int
a,b,c,d;
};
void
balik(char*s)
{
if(*s
!='\0'){
balik(&s[1]);
cout<<s[0];
}
}
main(){
char*balik="balik
bilagan";
int
a,b;
cout<<"masukan iteratif maupun rekursif "<<endl;
cin>>a>>b;
cout<<b<<a;
return
0;
}
6. Buatlah suatu subprogram yang mengembalikan nilai maksimum pertama (misal m1) dan
nilai maksimum kedua (misal m2, dan m1 tidak samadengan m2) dari array dengan n bilangan bulat.
.
7. Algoritma 5.5 menggunakan fungsi untuk menghitung n faktorial secara rekursif. Buatlah
algoritma menghitung n faktorial dengan menggunakan prosedur !
*ALGORITMA :
Dimisalkan menginputkan angka 4 sebagai bilangan positif, maka perhitungan menjadi 4*3*2*1.
int n; merupakan inisialisasi variabel n dengan tipe data integer sebagai proses perhitungan.
int faktorial(int k); merupakan inisialisasi variabel dengan nama faktorial yang dimana digunakan
untuk melakukan perhitungan variabel yang akan dijadikan variabel dalam melakukan perhitungan secara rekursif.
printf("Masukkan sembarang bilangan positif"); adalah perintah awal untuk menginputkan bilangan positif yang akan diproses.
printf(\nMelalui perhitungan rekursif, %d!= %d\n",n,faktorial(m)); adalah perintah untuk mengeksekusi
fungsi angka faktorialdimana angka akan terus berulang selama nilai variabel k belum bernilai 0, namun
jika sudah benar (0) maka akan mengembalikan nilai k*faktorial(k-1);
8. [Pengamatan : membayar barang belanja di kasir] Amatilah kejadian di mana seorang
pembeli (yang membeli barang cukup banyak) pada sebuah took swalayan. Perhatikan
apa yang dilakukan pembeli dan apa yang dilakukan oleh kasir ketika mengambil barang
belanjaan untuk menghitung berapa harga keseluruhan yang harus dibayar pembeli.
Laporkan konsep counter dan konsep total yang anda temukan pada kejadian tersebut.
Langkah yang dilakukan saat belanja :
a. mulai : kondisi awal sebelum belanja
b. proses :kegiatan apa saja yang dilakukan saat belanja
c. akhir : berapa uang yang diserahkan ke kasir, berapa jumlah barang yang dibeli beserta
jumlah uang yang harus dibayar dan uang kembalian (jika ada).
*ALGORITMA :
Menggunakan tipe data integer, menginputkan kode barang, nama barang, harga barang,
jumlah barang, kemudian akan muncul total harga belanjanya, jika harga belanjanya
kurang dari sama dengan 5000 maka diskonnya 0, jika lebih dari sama dengan 100000
maka mendapatkan diskon,total yang harus dibayarkan adalah total belanja dikurangi diskon, jika
total yang harus dibayarkan 230000 dan uang yang dibayar kekasir 250000 maka kembaliannya adalah 20000.
*C++
#include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
char nm_brg [50],lnjt='Y';
int diskon,Total_Belanja,bayar,kd_brg,jml_brg,hrg_brg,jml_uang,kembali;
do{
system("cls");
cout<<"Program kasir sederhana"<<endl;
cout<<"======================="<<endl;
cout<<"Masukkan kode barang : ";cin>>kd_brg;
cout<<"Masukkan nama barang : ";cin>>nm_brg;
cout<<"Masukkan harga barang : ";cin>>hrg_brg;
cout<<"Masukkan jumlah barang : ";cin>>jml_brg;
cout<<"========================="<<endl;
Total_Belanja=hrg_brg*jml_brg;
cout<<"Total : Rp."<<Total_Belanja<<endl;
cout<<"========================="<<endl;
if(Total_Belanja<=5000){
diskon=Total_Belanja*0;
}
else if(Total_Belanja>=100000){
diskon=Total_Belanja*10/100;
}
cout<<"Diskon : Rp."<<diskon<<endl;
bayar=Total_Belanja-diskon;
cout<<"Total bayar : Rp."<<bayar<<endl;
cout<<"========================"<<endl;
cout<<"Masukkan jumlah uang : Rp.";cin>>jml_uang;
cout<<"========================(-)"<<endl;
kembali=jml_uang-bayar;
cout<<"Kembali : Rp."<<kembali<<endl<<endl;
cout<<"Brang yang sudah dibeli tidak dapat ditukar atau dikembalikan"<<endl;
cout<<"Terimakasih atas kunjungan anda"<<endl<<endl;
cout<<"Ulangi lagi [Y/T] : ";cin>>lnjt;
cout<<endl<<endl;
}while(lnjt=='Y');
system("pause");
}
9. [Proyek] Buatlah suatu class yang akan mengeksplorasi kalimat. Kalimat dapat disimpan
dalam bentuk array (kumpulan) karakter.
a. masukan user diterima huruf demi huruf sampai diakhiri tanda akhir baris
(sentinel)
b. buat method untuk menghitung statistik :
i. huruf hidup (vokal)
ii. huruf mati (konsonan)
iii. banyak kata
iv. huruf terbanyak dalam kalimat.
c. buat method untuk mengubah huruf awal setiap kata menjadi huruf besar
class Kalimat {
friend
friend
public :
private :
};
DIKTAT BAB 4
revisi blog silahkan klik link dibawah ini :
diktat bab 4 revisi
Berikut adalah hasil perkerjaan diktat BAB 4 :
PEMILIHAN/ KONTROL PROGRAM
1. Buatlah flowchart dan translasi program dari algoritma 3.2.b.
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char* argv[]) {
int a, b, c;
cout<<"Masukkan nilai A = ";
cin>>a;
cout<<"Masukkan nilai b = ";
cin>>b;
cout<<"Masukkan nilai c = ";
cin>>c;
if(a>b) {
if(a>c) {
cout<<"Nilai terbesar adalah nilai A = "<<a;
}
}
if(b>a) {
if(b>c) {
cout<<"Nilai terbesar adalah nilai B = "<<b;
}
}
else if(c>a)
if(c>b) {
cout<<"Nilai terbesar adalah nilai C = "<<c;
}
return 0;
}
flowchart:
3. Buatlah program dari algoritma 3.4. menggunakan case … of .
#include <iostream>
#include <math.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
int a,b,c;
long disk;
float x1,x2;
cout<<"Koefisien pangkat 2 : ";cin>>a;
cout<<"Koefisien pangkat 1 : ";cin>>b;
cout<<"Koefisien pangkat 0 : ";cin>>c;
if(a==0){
cout<<"Bukan Pers.Kuadrat"<<endl;
cout<<"Harga Akar= "<<-c/b;
}
else {
disk=b*b - 4*a*c;
}
if(disk>0){
x1=-b+sqrt(disk)/(2*a);
x2=-b-sqrt(disk)/(2*a);
cout<<"Diskriminan = " <<disk << endl;
cout<<"x1 : "<<x1<<endl;
cout<<"x2 : "<<x2<<endl;
} else if(disk == 0){
x1 = -b/(2*a);
x2=x1;
cout<<"Diskriminan = 0 "<<endl;
cout<<"x1 : "<<x1<<endl;
cout<<"x2 : "<<x2<<endl;
} else
cout<<"Akar Imajiner";
return 0;
}
4. Buatlah algoritma, flowchart dan program untuk mengecek apakah pemakai
memasukkan bilangan bulat atau bilangan real.
Lebih dulu, carilah perbedaan dari 1.0 dan 1 kemudian 1 dan 1.23.
#include <cstdlib>
#include <iostream>
using namespace std;
void satuan (int a)
{
if (a==1)
cout<<"satu ";
else if (a==2)
cout << "dua";
else if (a==3)
cout << "tiga";
else if (a==4)
cout << "empat";
else if (a==5)
cout << "lima";
else if (a==6)
cout << "enam";
else if (a==7)
cout << "tujuh";
else if (a==8)
cout << "delapan";
else if (a==9)
cout << "sembilan";
else if (a==10)
cout << "sepuluh";
else if (a==11)
cout << "sebelas";
}
void pembilang (int b)
{
if (b<=11)
satuan (b);
else if (b<=11)&&(b<=19)
pembilang (b%10);
cout<<"belas";
else if (b>=20)&&(b<=99)
pembilang (b/10);
cout<<"puluh"; pembilang (b%10)
else if (b>=100)&&(b<=199)
pembilang (b/100);
cout<<"seratus"; pembilang(b%100)
else if (b>=200)&&(b<=999)
pembilang (b/100);
cout<<"ratus"; pembilang(b%100)
else if (b>=1000)&&(b<=1999)
pembilang (b/1000);
cout<<"seribu"; pembilang(b%1000)
else if (b>=2000)&&(b<=9999)
pembilang (b/1000);
cout<<"ribu"; pembilang(b%1000)
else if (b>=10000)&&(b<=99999)
pembilang (b/1000);
cout<<"ribu"; pembilang(b%1000)
else if (b>=100000)&&(b<=999999)
pembilang (b/1000);
cout<<"ribu"; pembilang(b%1000)
else if (b==1000000)
pembilang (b/1000);
cout<<"juta"; pembilang(b%1000)
else
cout << "Error";
}
int main(int argc, char *argv[])
{
int angka;
cout<<"====================================="<<endl<<endl;
cout<<"program mengubah angka menjadi ejaan "<<endl;
cout<<"====================================="<<endl<<endl;
cout<<"masukan angka : " ;cin>>angka;
if(angka<0)
{ cout << "minus" ;}
else
{cout<<" <"<<pembilang(angka);cout<<" >";
}
cout<<"\n---------------------------------\n"<<endl<<endl;
system("pause");
return 0;
}
5. Buatlah algoritma, flowchart dan program untuk menentukan banyaknya hari
dalam suatu bulan dan tahun yang diberikan. Pertimbangkan pula adanya tahun
kabisat di mana bulan Februari mempunyai jumlah 29 hari. Gunakan case .. of
dan if .. then .. else .. yang tepat untuk setiap kasus.
#include <iostream>
using namespace std;
int year, month, day;
void input();
void errorYear();
void errorMonth();
void again();
int main()
{
cout<<"Program menghitung hari dalam satu bulan."<<endl;
input();
}
void input()
{
cout<<"Masukkan angka tahun:"<<endl;
cin>>year;
cout<<"Masukkan angka bulan:"<<endl;
cin>>month;
if (year <= 0)
errorYear();
switch (month)
{
case 1:
cout<<"Bulan Januari tahun "<<year<<" ada 31 hari."<<endl;
break;
case 2:
if (year % 4 == 0)
cout<<"Bulan Februari tahun "<<year<<" ada 29 hari."<<endl;
else
cout<<"Bulan Februari tahun "<<year<<" ada 28 hari."<<endl;
break;
case 3:
cout<<"Bulan Maret tahun "<<year<<" ada 31 hari."<<endl;
break;
case 4:
cout<<"Bulan April tahun "<<year<<" ada 30 hari."<<endl;
break;
case 5:
cout<<"Bulan Mei tahun "<<year<<" ada 31 hari."<<endl;
break;
case 6:
cout<<"Bulan Juni tahun "<<year<<" ada 30 hari."<<endl;
break;
case 7:
cout<<"Bulan Juli tahun "<<year<<" ada 31 hari."<<endl;
break;
case 8:
cout<<"Bulan Agustus tahun "<<year<<" ada 31 hari."<<endl;
break;
case 9:
cout<<"Bulan September tahun "<<year<<" ada 30 hari."<<endl;
break;
case 10:
cout<<"Bulan Oktober tahun "<<year<<" ada 31 hari."<<endl;
break;
case 11:
cout<<"Bulan November tahun "<<year<<" ada 30 hari."<<endl;
break;
case 12:
cout<<"Bulan Desember tahun "<<year<<" ada 31 hari."<<endl;
break;
default :
errorMonth();
break;
}
again();
}
void errorYear()
{
cout<<"Masukkan data tahun tidak valid."<<endl;
again();
main();
}
void errorMonth()
{
cout<<"Masukkan data bulan tidak valid."<<endl;
again();
main();
}
void again()
{
char answer;
cout<<endl<<"Tekan Y untuk mencoba lagi."<<endl<<"Mau mencoba lagi?"<<endl;
cin>>answer;
if (answer == 'Y' || answer == 'y')
{
main();
}
else
{
return;
}
}
6. Buatlah algoritma, flowchart dan program untuk mengecek apakah karakter yang
dimasukkan itu merupakan huruf besar, huruf kecil atau digit (bilangan).
Gunakan fungsi ORD(char) untuk menyatakan nomor urut dalam tabel ASCII.
#include <iostream>
#include <conio.h>
using namespace std;
class Karakter
{
private:
char karakter;
public:
void Proses ();
void Output ();
};
void Karakter::Proses()
{
cout<<"Masukkan Karakter = ";cin>>karakter;
};
void Karakter::Output(){
if (karakter >='A' && karakter <='Z')
cout<<"Huruf Besar"<<endl;
else if (karakter >= 'a' && karakter <='z')
cout<<"Huruf Kecil"<<endl;
else if (karakter >= '0' && karakter <= '9')
cout<<"Digit (Bilangan)"<<endl;
else
cout<<"Simbol"<<endl;
};
main ()
{
Karakter bilhur;
bilhur.Proses();
bilhur.Output();
getch ();
return 0;
}
7.Seorang dosen ingin mengkonversikan nilai angka hasil ujian mahasiswa
menjadi nilai huruf dengan ketentuan :
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
int nilai;
string nilaihuruf;
cout<<"masukkan nilai (0-100) : ";cin>>nilai;
if(nilai <=100 && nilai>=91)
nilaihuruf='A';
else if(nilai<=90 && nilai>=81)
nilaihuruf='B';
else if(nilai<=80 && nilai>=71)
nilaihuruf='C';
else if(nilai<=70 && nilai>=61)
nilaihuruf='D';
else
nilaihuruf='F';
cout<<"Nilai = "<<nilaihuruf;
return 0;
}
8.Diberikan ketentuan pecahan uang di Indonesia. User memasukkan sebuah
bilangan, program harus dapat memecahnya menjadi pecahan sesuai dengan
mata uang di Indonesia.
Misalkan dimasukkan nilai uang 127.675 rupiah. Cobalah memecah secara
manual nilai uang di atas.
diktat bab 4 revisi
Berikut adalah hasil perkerjaan diktat BAB 4 :
PEMILIHAN/ KONTROL PROGRAM
1. Buatlah flowchart dan translasi program dari algoritma 3.2.b.
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char* argv[]) {
int a, b, c;
cout<<"Masukkan nilai A = ";
cin>>a;
cout<<"Masukkan nilai b = ";
cin>>b;
cout<<"Masukkan nilai c = ";
cin>>c;
if(a>b) {
if(a>c) {
cout<<"Nilai terbesar adalah nilai A = "<<a;
}
}
if(b>a) {
if(b>c) {
cout<<"Nilai terbesar adalah nilai B = "<<b;
}
}
else if(c>a)
if(c>b) {
cout<<"Nilai terbesar adalah nilai C = "<<c;
}
return 0;
}
flowchart:
3. Buatlah program dari algoritma 3.4. menggunakan case … of .
#include <iostream>
#include <math.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
int a,b,c;
long disk;
float x1,x2;
cout<<"Koefisien pangkat 2 : ";cin>>a;
cout<<"Koefisien pangkat 1 : ";cin>>b;
cout<<"Koefisien pangkat 0 : ";cin>>c;
if(a==0){
cout<<"Bukan Pers.Kuadrat"<<endl;
cout<<"Harga Akar= "<<-c/b;
}
else {
disk=b*b - 4*a*c;
}
if(disk>0){
x1=-b+sqrt(disk)/(2*a);
x2=-b-sqrt(disk)/(2*a);
cout<<"Diskriminan = " <<disk << endl;
cout<<"x1 : "<<x1<<endl;
cout<<"x2 : "<<x2<<endl;
} else if(disk == 0){
x1 = -b/(2*a);
x2=x1;
cout<<"Diskriminan = 0 "<<endl;
cout<<"x1 : "<<x1<<endl;
cout<<"x2 : "<<x2<<endl;
} else
cout<<"Akar Imajiner";
return 0;
}
4. Buatlah algoritma, flowchart dan program untuk mengecek apakah pemakai
memasukkan bilangan bulat atau bilangan real.
Lebih dulu, carilah perbedaan dari 1.0 dan 1 kemudian 1 dan 1.23.
#include <cstdlib>
#include <iostream>
using namespace std;
void satuan (int a)
{
if (a==1)
cout<<"satu ";
else if (a==2)
cout << "dua";
else if (a==3)
cout << "tiga";
else if (a==4)
cout << "empat";
else if (a==5)
cout << "lima";
else if (a==6)
cout << "enam";
else if (a==7)
cout << "tujuh";
else if (a==8)
cout << "delapan";
else if (a==9)
cout << "sembilan";
else if (a==10)
cout << "sepuluh";
else if (a==11)
cout << "sebelas";
}
void pembilang (int b)
{
if (b<=11)
satuan (b);
else if (b<=11)&&(b<=19)
pembilang (b%10);
cout<<"belas";
else if (b>=20)&&(b<=99)
pembilang (b/10);
cout<<"puluh"; pembilang (b%10)
else if (b>=100)&&(b<=199)
pembilang (b/100);
cout<<"seratus"; pembilang(b%100)
else if (b>=200)&&(b<=999)
pembilang (b/100);
cout<<"ratus"; pembilang(b%100)
else if (b>=1000)&&(b<=1999)
pembilang (b/1000);
cout<<"seribu"; pembilang(b%1000)
else if (b>=2000)&&(b<=9999)
pembilang (b/1000);
cout<<"ribu"; pembilang(b%1000)
else if (b>=10000)&&(b<=99999)
pembilang (b/1000);
cout<<"ribu"; pembilang(b%1000)
else if (b>=100000)&&(b<=999999)
pembilang (b/1000);
cout<<"ribu"; pembilang(b%1000)
else if (b==1000000)
pembilang (b/1000);
cout<<"juta"; pembilang(b%1000)
else
cout << "Error";
}
int main(int argc, char *argv[])
{
int angka;
cout<<"====================================="<<endl<<endl;
cout<<"program mengubah angka menjadi ejaan "<<endl;
cout<<"====================================="<<endl<<endl;
cout<<"masukan angka : " ;cin>>angka;
if(angka<0)
{ cout << "minus" ;}
else
{cout<<" <"<<pembilang(angka);cout<<" >";
}
cout<<"\n---------------------------------\n"<<endl<<endl;
system("pause");
return 0;
}
5. Buatlah algoritma, flowchart dan program untuk menentukan banyaknya hari
dalam suatu bulan dan tahun yang diberikan. Pertimbangkan pula adanya tahun
kabisat di mana bulan Februari mempunyai jumlah 29 hari. Gunakan case .. of
dan if .. then .. else .. yang tepat untuk setiap kasus.
#include <iostream>
using namespace std;
int year, month, day;
void input();
void errorYear();
void errorMonth();
void again();
int main()
{
cout<<"Program menghitung hari dalam satu bulan."<<endl;
input();
}
void input()
{
cout<<"Masukkan angka tahun:"<<endl;
cin>>year;
cout<<"Masukkan angka bulan:"<<endl;
cin>>month;
if (year <= 0)
errorYear();
switch (month)
{
case 1:
cout<<"Bulan Januari tahun "<<year<<" ada 31 hari."<<endl;
break;
case 2:
if (year % 4 == 0)
cout<<"Bulan Februari tahun "<<year<<" ada 29 hari."<<endl;
else
cout<<"Bulan Februari tahun "<<year<<" ada 28 hari."<<endl;
break;
case 3:
cout<<"Bulan Maret tahun "<<year<<" ada 31 hari."<<endl;
break;
case 4:
cout<<"Bulan April tahun "<<year<<" ada 30 hari."<<endl;
break;
case 5:
cout<<"Bulan Mei tahun "<<year<<" ada 31 hari."<<endl;
break;
case 6:
cout<<"Bulan Juni tahun "<<year<<" ada 30 hari."<<endl;
break;
case 7:
cout<<"Bulan Juli tahun "<<year<<" ada 31 hari."<<endl;
break;
case 8:
cout<<"Bulan Agustus tahun "<<year<<" ada 31 hari."<<endl;
break;
case 9:
cout<<"Bulan September tahun "<<year<<" ada 30 hari."<<endl;
break;
case 10:
cout<<"Bulan Oktober tahun "<<year<<" ada 31 hari."<<endl;
break;
case 11:
cout<<"Bulan November tahun "<<year<<" ada 30 hari."<<endl;
break;
case 12:
cout<<"Bulan Desember tahun "<<year<<" ada 31 hari."<<endl;
break;
default :
errorMonth();
break;
}
again();
}
void errorYear()
{
cout<<"Masukkan data tahun tidak valid."<<endl;
again();
main();
}
void errorMonth()
{
cout<<"Masukkan data bulan tidak valid."<<endl;
again();
main();
}
void again()
{
char answer;
cout<<endl<<"Tekan Y untuk mencoba lagi."<<endl<<"Mau mencoba lagi?"<<endl;
cin>>answer;
if (answer == 'Y' || answer == 'y')
{
main();
}
else
{
return;
}
}
6. Buatlah algoritma, flowchart dan program untuk mengecek apakah karakter yang
dimasukkan itu merupakan huruf besar, huruf kecil atau digit (bilangan).
Gunakan fungsi ORD(char) untuk menyatakan nomor urut dalam tabel ASCII.
#include <iostream>
#include <conio.h>
using namespace std;
class Karakter
{
private:
char karakter;
public:
void Proses ();
void Output ();
};
void Karakter::Proses()
{
cout<<"Masukkan Karakter = ";cin>>karakter;
};
void Karakter::Output(){
if (karakter >='A' && karakter <='Z')
cout<<"Huruf Besar"<<endl;
else if (karakter >= 'a' && karakter <='z')
cout<<"Huruf Kecil"<<endl;
else if (karakter >= '0' && karakter <= '9')
cout<<"Digit (Bilangan)"<<endl;
else
cout<<"Simbol"<<endl;
};
main ()
{
Karakter bilhur;
bilhur.Proses();
bilhur.Output();
getch ();
return 0;
}
7.Seorang dosen ingin mengkonversikan nilai angka hasil ujian mahasiswa
menjadi nilai huruf dengan ketentuan :
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
int nilai;
string nilaihuruf;
cout<<"masukkan nilai (0-100) : ";cin>>nilai;
if(nilai <=100 && nilai>=91)
nilaihuruf='A';
else if(nilai<=90 && nilai>=81)
nilaihuruf='B';
else if(nilai<=80 && nilai>=71)
nilaihuruf='C';
else if(nilai<=70 && nilai>=61)
nilaihuruf='D';
else
nilaihuruf='F';
cout<<"Nilai = "<<nilaihuruf;
return 0;
}
8.Diberikan ketentuan pecahan uang di Indonesia. User memasukkan sebuah
bilangan, program harus dapat memecahnya menjadi pecahan sesuai dengan
mata uang di Indonesia.
Misalkan dimasukkan nilai uang 127.675 rupiah. Cobalah memecah secara
manual nilai uang di atas.
DIKTAT BAB 3
Bab 3 : Sekuen
Berikut adalah hasil pekerjaan bab 3 :
1.Buatlah analisis dan algoritma untuk mencari titik tengah sebuah garis yang ujung
titiknya adalah A(x1,y1) dan B(x2,y2).
2. Buatlah algoritma untuk mencari isi bola bila diketahui jari-jari bola
4.Buatlah analisis dan algoritma untuk menghitung konversi detik menjadi format
jam:menit:detik
Buat contoh kasus, misalnya konversikan 1230 detik menjadi … jam … menit … detik.
5. Buatlah analisis dan algoritma untuk menghitung konversi dari jam:menit:detik ke detik
Buat contoh kasus, misalnya konversikan 2 jam 13 menit 43 detik menjadi … detik.
7. Buatlah analisis dan algoritma untuk menghitung jumlah komponen sejumlah uang
menjadi pecahan-pecahannya. Misalkan Rp 188.875,- menjadi : 1 seratus ribuan, 1 lima
puluh ribuan, 1 dua puluh ribuan, 1 puluhan ribu, 1 lima ribuan, 3 ribuan, 1 lima ratusan,
1 dua ratusan, 1 ratusan, 1 lima puluhan, 1 dua puluh limaan
8. [Pengamatan] Buatlah analisis dan algoritma untuk menghitung luas sebuah plat CD.
Diameter lingkaran luar = …. cm.
Diameter lingkaran dalam = …. cm.
10. Buatlah analisis dan algoritma untuk mengkonversi bilangan biner 4 digit menjadi
bilangan desimal. Operator overloading input mencegah user untuk memasukkan
bilangan selain 0 dan 1. Deklarasi variabel input dan output adalah bertipe integer.
12. Buatlah analisis dan algoritma untuk menghitung jumlah dari dari dua tanggal yang
dimasukkan user. Misalnya, berapa hari dari 6/1/90 sampai 8/3/92 ? Anggap satu tahun
365 hari dan anggap semua komponen tanggal pertama SELALU LEBIH KECIL dari
komponen tanggal kedua.
Berikut adalah hasil pekerjaan bab 3 :
1.Buatlah analisis dan algoritma untuk mencari titik tengah sebuah garis yang ujung
titiknya adalah A(x1,y1) dan B(x2,y2).
2. Buatlah algoritma untuk mencari isi bola bila diketahui jari-jari bola
4.Buatlah analisis dan algoritma untuk menghitung konversi detik menjadi format
jam:menit:detik
Buat contoh kasus, misalnya konversikan 1230 detik menjadi … jam … menit … detik.
5. Buatlah analisis dan algoritma untuk menghitung konversi dari jam:menit:detik ke detik
Buat contoh kasus, misalnya konversikan 2 jam 13 menit 43 detik menjadi … detik.
7. Buatlah analisis dan algoritma untuk menghitung jumlah komponen sejumlah uang
menjadi pecahan-pecahannya. Misalkan Rp 188.875,- menjadi : 1 seratus ribuan, 1 lima
puluh ribuan, 1 dua puluh ribuan, 1 puluhan ribu, 1 lima ribuan, 3 ribuan, 1 lima ratusan,
1 dua ratusan, 1 ratusan, 1 lima puluhan, 1 dua puluh limaan
8. [Pengamatan] Buatlah analisis dan algoritma untuk menghitung luas sebuah plat CD.
Diameter lingkaran luar = …. cm.
Diameter lingkaran dalam = …. cm.
10. Buatlah analisis dan algoritma untuk mengkonversi bilangan biner 4 digit menjadi
bilangan desimal. Operator overloading input mencegah user untuk memasukkan
bilangan selain 0 dan 1. Deklarasi variabel input dan output adalah bertipe integer.
12. Buatlah analisis dan algoritma untuk menghitung jumlah dari dari dua tanggal yang
dimasukkan user. Misalnya, berapa hari dari 6/1/90 sampai 8/3/92 ? Anggap satu tahun
365 hari dan anggap semua komponen tanggal pertama SELALU LEBIH KECIL dari
komponen tanggal kedua.























































