Workshop algoritma dan class
1. Buatlah analisis dan algoritma
untuk mencari titik tengah sebuah garis yang ujung
titiknya
adalah A(x1,y1) dan B(x2,y2).
#include
<cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int A,B,x1,x2,y1,y2;
cout<<"Masukan nilai x1,x2,y1, dan y2 :"<<endl;
cin>>x1>>x2>>y1>>y2;
A=((x1+y1)/2);
B=((x2+y2)/2);
cout<<"Titik tengah garisnya " << x1 << " Dan " << y1 <<endl;
cout<<" adalah = " << A <<endl<<endl;
cout<<"Titik tengah garisnya " << x2 << " Dan " << y2 <<endl;
cout<<" adalah = " << B <<endl;
system("pause");
return 0;
}
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int A,B,x1,x2,y1,y2;
cout<<"Masukan nilai x1,x2,y1, dan y2 :"<<endl;
cin>>x1>>x2>>y1>>y2;
A=((x1+y1)/2);
B=((x2+y2)/2);
cout<<"Titik tengah garisnya " << x1 << " Dan " << y1 <<endl;
cout<<" adalah = " << A <<endl<<endl;
cout<<"Titik tengah garisnya " << x2 << " Dan " << y2 <<endl;
cout<<" adalah = " << B <<endl;
system("pause");
return 0;
}
2. Buatlah algoritma untuk
mencari isi bola bila diketahui jari-jari bola.
Input :
{membaca
data real berupajari-jari bola (r),
danmenghitungisiatauvolumenyadenganjari-jaritertentu. Volume bola
dihiutngdenganrumus V=4Ï€r3. Nilai V dicetaksebagai output
keperantikeluaran.}
Deklarasi:
Phi : float {nilai 3,14, satuancm}
R : float {jari-jari bola, satuan cm}
V : float {volume bola, satuan cm3}
Deskripsi:
Baca
(phi)
Baca
(r)
Vß4*phi*r*r*r
Write(V)
using namespace std;
int main(int argc, char** argv) {
float
L,r,phi=3.14,V;
cout<<"Masukkan
jari-jari: "; cin>>r;
V=4/3*phi*r*r*r;
cout<<"Volume
Bola= "<<V;
return
0;
3. Buatlah analisis dan algoritma
untuk mencari hipotenusa dari segitiga Pythagoras bila
diketahui sisi siku-sikunya. (Petunjuk :
gunakan fungsi sqrt yang menyatakan akar
dari).
Analisis:
Kasushipotenusa:
H=sqrt(A*A+B*B)
Algoritma:
{membacapanjangsisidepan (A) dan
alas segitiga (B), danmenghitunghipotenusadenganpanjangsisidepandansisi alas
tertentu. Hipotenusadihitungdenganrumus H=sqrt(A*A+B*B). nilai H dicetaksebagai
output}
Deklarasi:
A = integer (input)
B = integer (input)
H= float (output)
Deskripsi:
Read (A)
Read (B)
Hßsqrt(A*A+B*B)
Write (H)
using namespace std;
int main(int argc, char** argv) {
int
A,B; float C;
cout<<"Program
mencari hipotenusa"<<endl;
cout<<endl;
cout<<"Masukkan
panjang A= "; cin>>A;
cout<<"Masukkan
panjang B= "; cin>>B;
C=sqrt(A*A+B*B);
cout<<"Hipotenusanya=
"<<C;
return
0;
}
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.
Analisis:
Kasusjam :detik/3600
Kasus modulus: -sisa = jam%3600
Sisa
2 =menit%60
Kasusmenit :sisa/60
Kasusdetik: detik=sisa 2
Algoritma:
{membacajumlahdetik
(detik), danmenghitung jam=detik/3600, menit/60.Nilai jam,
menitdandetiksebagaiberikut}
Deklarasi:
Detik : integer
Jam : integer
Menit : integer
Sisa : integer
Sisa 2 : integer
Deskripsi:
Baca (detik)
Jamßjam/3600
Menitßmenit/60
Write (jam,menit,sisa).
using namespace std;
int main(int argc, char** argv) {
int
detik,jam,menit,sisa,sisa2;
cout<<"Masukkan
jumlah detik: "; cin>>detik;
jam=detik/3600;
sisa=jam&3600;
menit=sisa/60;
sisa2=menit%60;
detik=sisa2;
cout<<"Jam : "<<jam<<endl;
cout<<"menit
: "<<menit<<endl;
cout<<"detik
: "<<detik;
return
0;
}
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.
Analisis:
Kasus:
j =jam*3600
m=menit*60
Algoritma:
{membacajumlah
jam(jam), menit (menit), detik (detik) danmenghitungdenganrumus h=j+m+detik}
Deklarasi:
Jam
(integer)
Menit (integer)
Detik (integer)
Deskripsi:
Baca
(jam)
Baca (menit)
Detik
(detik)
Hasilßj+m+detik
Write
(hasil)
using namespace std;
int main(int argc, char** argv) {
int
j,m,detik,jam,menit,hasil;
cout<<"Masukkan
jumlah jam: "; cin>>jam;
cout<<"Masukkan
jumlah menit: "; cin>>menit;
cout<<"Masukkan
jumlah detik: "; cin>>detik;
j=jam*3600;
m=menit*60;
hasil=j+m+detik;
cout<<"Jumlah
detik : "<<hasil;
return
0;
}
6. Buatlah analisis dan algoritma untuk menghitung
selisih 2 waktu. Output ditampilkan
dalam bentuk jam:menit:detik. Asumsikan menggunakan sistem jam 24-an.
Buat contoh kasus, misalnya berapa selisih
waktu antara jam 3.45 sore dengan jam 10.23
malam.
Selesaikan secara manual lebih dulu.
Analisis:
·
Kasusselisihdetik:
If((detik.detik-detik.detik)<0){
det.detik =
(60+detik.detik)-detik.detik;
men.menit*60-60;}
else{det.detik=detik.detik-deti.detik;}
·
kasusselisihmenit:
if((menit.menit-meni.menit)<0){
men.menit=(60+meni.menit)-menit.menit;
j.jam*60-60;}
else { men.menit=menit.menit-meni.menit;}
·
kasusselisih jam:
j.jam=jam.jam-ja.jam;
Algoritma:
{membacanilaiwaktupertama
[jam(jam.jam), menit(menit),detik(detik)], nilaiwaktukedua
[jam(ja.jam),menit(meni,menit), detik(deti.detik)].
Menghitungselisihdenganmengurangkanwaktuperjamdenganwaktukedua}
Deklarasi:
//function
Structsatu ();
Structdua ();
Structselisih ();
//didalamstructberisi:
jam (integer)
jenit (integer)
detik (integer)
//main()
Jam, menit, detik (satu)
Ja, meni, deti (dua)
J, men, det (selisih)
Deskripsi:
//waktupertama
Baca jam.jam (integer)
Baca menit.menit (integer)
Baca detik.detik (integer)
//waktukedua
Baca ja.jam (integer)
Baca meni.menit (integer)
Baca detik.detik (integer)
Write (j.jam, men.menit, det.detik)
using namespace std;
struct satu{
int
jam;
int
menit;
int
detik;
};
struct dua{
int
jam;
int
menit;
int
detik;
};
struct selisih{
int
jam;
int
menit;
int
detik;
};
int main(int argc, char** argv) {
satu
jam, menit, detik;
dua ja,
meni, deti;
selisih
j, men, det;
cout<<" PROGRAM MENCARI SELISIH
WAKTU"<<endl;
cout<<" Ubah ke detikterlebih
dahulu"<<endl<<endl;
cout<<"PERTAMA"<<endl;
cout<<"jam : "; cin>>jam.jam;
cout<<"menit
: "; cin>>menit.menit;
cout<<"detik
: "; cin>>detik.detik;
cout<<endl<<endl;
cout<<"KEDUA"<<endl;
cout<<"jam : "; cin>>ja.jam;
cout<<"menit
: "; cin>>meni.menit;
cout<<"detik
: "; cin>>deti.detik;
if((detik.detik-deti.detik)<0){
det.detik=(60+deti.detik)-detik.detik;
men.menit*60-60;
}else{
det.detik=detik.detik-deti.detik;
}
if((menit.menit-meni.menit)<0){
men.menit=(60+meni.menit)-menit.menit;
j.jam*60-60;
}else{
men.menit=menit.menit-meni.menit;
}
j.jam=jam.jam-ja.jam;
cout<<endl<<endl;
cout<<"SELISIH";
cout<<"jam : "<<j.jam<<endl;
cout<<"menit : "<<men.menit<<endl;
cout<<"detik : "<<det.detik<<endl;
return
0;
}
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.
Rumus luas
plat CD :
Analisis:
KasusrumusD:
Phi*dalam*dalam.
KasusrumusL:
Phi*luar*luar.
KasusluasCD:
rumusL-rumusD.
Algoritma:
{membacajari-jaridalam(dalam)
danjari-jari(luar). MenghitungluasCDdenganrumusrumusL-rumusD)
Deklarasi:
Dalam (integer).
Luar (integer).
rumusD (integer).
rumusL (integer).
luasCD (integer).
Phi (float, nilai 3.14).
Deskripsi:
Baca (dalam).
Baca (luar).
luasCDßrumusL-rumusD.
Write (luasCD).
using namespace std;
int main(int argc, char** argv) {
int
dalam,luar,rumusD, rumusL,luasCD;
float
phi=3.14;
cout<<"Masukkan
jari-jari bagian dalam CD= "; cin>>dalam;
cout<<"Masukkan
jari-jari bagian luar CD = "; cin>>luar;
rumusD=phi*dalam*dalam;
rumusL=phi*luar*luar;
luasCD=rumusL-rumusD;
cout<<"Luas
plat CD= "<<luasCD<<" cm";
return
0;
}
9. Buatlah analisis dan algoritma untuk menghitung
operasi bilangan rasional :
penjumlahan, pengurangan, perkalian,
pembagian dan kebalikan.
Buat contoh kasus, misalnya dua bilangan
rasional 2/3 dan 4/7.
Hasil
penjumlahan manual =
using
namespace std;
int main(int argc, char** argv) {
float
a,b,hasil,p,q,bagi1,bagi2,hasil1,hasil2,hasil3,hasil4;
cout<<" Menghitung 2 Bilangan Rasional"<<endl<<endl;
cout<<"=>
Bilangan pertama"<<endl;
cout<<"Masukkan
pembilang = "; cin>>a;
cout<<"Masukkan
penyebut = "; cin>>b;
cout<<"
"<<a<<"/"<<b<<endl;
bagi1=a/b;
cout<<"diubah
ke bilangan desimal: "<<bagi1;
cout<<endl<<endl<<endl;
cout<<"=>
Bilangan kedua"<<endl;
cout<<"Masukkan
pembilang = "; cin>>p;
cout<<"Masukkan
penyebut = "; cin>>q;
cout<<"
"<<p<<"/"<<q<<endl;
bagi2=p/q;
cout<<"diubah
ke bilangan desimal: "<<bagi2;
hasil1=bagi1+bagi2;
hasil1=bagi1-bagi2;
hasil1=bagi1*bagi2;
hasil1=bagi1/bagi2;
cout<<endl<<endl;
cout<<"#Hasil
operasi Kedua bilangan"<<endl;
cout<<"Penjumlahan
= "<<hasil1<<endl;
cout<<"Pengurangan
= "<<hasil2<<endl;
cout<<"Perkalian = "<<hasil3<<endl;
cout<<"Pembagian = "<<hasil4<<endl;
return
0;
}
10. Buatlah analisis dan algoritma untuk mengkonversi
bilangan biner 4 digit menjadi
bilangan selain 0 dan 1. Deklarasi variabel
input dan output adalah bertipe integer.
bilangan desimal. Operator overloading
input mencegah user untuk memasukkan
Konversikan
1011 ke desimal :
Analisis:
Kasusbiner 4 digit:
Switch(biner){
Case 1000
Case 1001
Case 1010
Case 1011
Case 1100
Case 1101
Case 1110
Case 1111
Algoritma:
{membacanilaibiner (biner),
mencarinilaidesimaldenganmenggunakan switch)
Deklarasi:
Biner (integer).
Deskripsi:
Baca (biner).
Switch (biner).
Write (case 1000, case 1001, case
1010, case 1011, case 1100, case 1101, case 1110, case 1111).
using namespace std;
int main(int argc, char** argv) {
int
biner;
cout<<" Konversi Bilangan Biner 4 Digit ke
Desimal"<<endl<<endl;
cout<<"Masukkan
bilangan biner= "; cin>>biner;
switch(biner){
case
1000:
cout<<"desimal
= 8";
break;
case
1001:
cout<<"desimal=
9";
break;
case
1010:
cout<<"desimal
= 10";
break;
case
1011:
cout<<"desimal
= 11";
break;
case
1100:
cout<<"desimal
= 12";
break;
case
1101:
cout<<"desimal
= 13";
break;
case
1110:
cout<<"desimal
= 14";
case
1111:
cout<<"desimal
= 15";
default:
cout<<"selain
bilangan biner tidak bisa";
break;
}
return
0;
}
11. Buatlah analisis dan algoritma untuk menjumlah dua bilangan scientific berbentuk aEb
dengan 0 < a < 10 dan 0 <= b <= 4.
Hitung 2.1E2 + 3.31E1 = secara manual lebih dulu.
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.
Hitung secara manual kasus dalam soal.
using namespace std;
int proses(){
int a;
int b;
int c;
}
int selisih(){
int T1;
int T2;
int i;
int j;
}
char tugas;
int main(int argc, char** argv) {
int d1,m1,y1;
int d2,m2,y2;
return 0;
}
11. Buatlah analisis dan algoritma untuk menjumlah dua bilangan scientific berbentuk aEb
dengan 0 < a < 10 dan 0 <= b <= 4.
Hitung 2.1E2 + 3.31E1 = secara manual lebih dulu.
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.
Hitung secara manual kasus dalam soal.
using namespace std;
int proses(){
int a;
int b;
int c;
}
int selisih(){
int T1;
int T2;
int i;
int j;
}
char tugas;
int main(int argc, char** argv) {
int d1,m1,y1;
int d2,m2,y2;
return 0;
}
Sign up here with your email
ConversionConversion EmoticonEmoticon