Algoritma akar imajiner berbentuk a + bi dengan a dan b bilangan real dan bila harga b^2 - 4ac < 0 dengan menyempurnakan Algoritma Persamaan_Kuadrat.
Algoritma Persamaan_Kuadrat :
Jawab :
Analisis :
A dan B adalah bilangan real, maka nilai dari A dan B bisa berupa bilangan rasional dan irrasional beserta negatifnya dan nol. Hal ini berarti tipe data A dan B nantinya adalah double.
Bilangan kompleks berbentuk z = a + bi, dengan a sebagai bagian real dari z dan b sebagai bagian imajinari dari z.
rumus determinan (disk) yaitu disk = B^2 - 4AC. Dapat ditulis dengan disk = ((B*B) - (4*A*C))
Apabila harga B^2 - 4AC < 0 atau disk < 0, maka akar-akarnya tidak real atau imajiner
Imajinari didefinisikan sebagai i = sqrt(-1)
Rumus menghitung nilai a :
z = a + bi
a = Re z
a = ((-B) / (2 * A))
Rumus menghitung nilai b :
disk = (B*B) - (4*A*C)
z = a + bi
b = Im z
b = ((sqrt(disk*(-1))) / (2 * A))
Algoritma :
Algoritma Persamaan_Kuadrat
{Menghitung akar-akar persamaan kuadrat Ax^2 + Bx + C = 0}
Deklarasi
A, B, a, b : double {koefisien-koefisien persamaan}
C : integer {koefisien persamaan}
disk : longint {nilai deskriminan}
x1, x2 : real {nilai-nilai akar untuk disk >= 0}
Deskripsi
read (A, B, C)
disk ← ((B*B) - (4*A*C))
if (A = 0) then
write ("Bukan Persamaan Kuadrat")
else if (disk > 0) then
x1 ← ((-B + sqrt (disk))/(2*A))
x1 ← ((-B - sqrt (disk))/(2*A))
write (x1, x2)
else if (disk = 0) then
x1 ← (-B/(2*A))
x2 ← x1
write (x1, x2)
else
a ← ((-B) / (2 * A))
b ← ((sqrt(disk*(-1))) / (2 * A))
write ("(a + bi) , (a - bi)")
end if
Flowchart
Program C++
#include <iostream>
#include <math.h>
using namespace std;
class akar{
friend ostream& operator<<(ostream&, const akar&);
friend istream& operator>>(istream&, akar&);
public :
int C;
double A, B, disk, x1, x2, a, b;
void seleksi();
};
istream& operator>>(istream& in, akar& masuk){
cout<<"masukkan A : ";
in>>masuk.A;
cout<<"masukkan b : ";
in>>masuk.B;
cout<<"masukkan c : ";
in>>masuk.C;
return in;
}
void akar::seleksi(){
disk = ((B*B) - (4*A*C));
if (A == 0)
cout<<"Bukan Persamaan Kuadrat";
else if (disk > 0){
x1 = (-B+sqrt(disk))/(2*A);
x2 = (-B-sqrt(disk))/(2*A);
cout << "x1 = " <<x1 <<endl;
cout << "x2 = " <<x2 <<endl;
}else if (disk == 0){
x1 = (-B/(2*A));
x2 = x1;
cout<<"("<<x1<<" , "<<x2<")";
}else{
a = ((-B) / (2 * A));
b = ((sqrt(disk*(-1))) / (2 * A));
cout <<"("<<a<<" + "<<b<<"i) , ("<<a<<" - "<<b<<"i)";
}
}
ostream& operator << (ostream& out, akar& keluar){
keluar.seleksi();
return out;
}
int main(){
akar x;
cin>>x;
cout<<x;
}
Hasil run program :
Algoritma, flowchart, dan program untuk menetukan benyaknya hari dalam suatu bulan dan tahun yang diberikan
Jawab :
Algoritma :
Algoritma jumlah_hari
{menentukan jumlah hari dengan mempertimbangkan adanya tahun kabisat}
Deklarasi
tahun, pilih : integer
Deskripsi
read (tahun, pilih)
Pilih (pilih)
1 : write ("bulan Januari jumlah hari 31")
2 : if (tahun%400=0) then
write ("bulan Februari jumlah hari 29")
else if (tahun%100=0) then
write ("bulan Februari jumlah hari 28")
else if (tahun%4=0) then
write ("bulan Februari jumlah hari 29")
else
write ("bulan Februari jumlah hari 28")
end if
3 : write ("bulan Maret jumlah hari 31")
4 : write ("bulan April jumlah hari 30")
5 : write ("bulan Mei jumlah hari 31")
6 : write ("bulan Juni jumlah hari 30")
7 : write ("bulan Juli jumlah hari 31")
8 : write ("bulan Agustus jumlah hari 31")
9 : write ("bulan September jumlah hari 30")
10 : write ("bulan Oktober jumlah hari 31")
11 : write ("bulan November jumlah hari 30")
12 : write ("bulan Desember jumlah hari 31")
else : write ("periksa kembali input anda!")
end {Pilih}
Flowchart
Program C++
#include <iostream>
using namespace std;
class waktu{
friend ostream& operator<<(ostream&, waktu&);
friend istream& operator>>(istream&, waktu&);
public :
seleksi();
int tahun, pilih;
};
istream& operator>>(istream& in, waktu& masuk){
cout<<"masukkan tahun : ";
in>>masuk.tahun;
return in;
}
waktu::seleksi(){
cout<<"Pilih bulan : "<<endl;
cout<<"1. Januari"<<endl;
cout<<"2. Februari"<<endl;
cout<<"3. Maret"<<endl;
cout<<"4. April"<<endl;
cout<<"5. Mei"<<endl;
cout<<"6. Juni"<<endl;
cout<<"7. Juli"<<endl;
cout<<"8. Agustus"<<endl;
cout<<"9. September"<<endl;
cout<<"10. Oktober"<<endl;
cout<<"11. November"<<endl;
cout<<"12. Desember"<<endl;
cout<<"masukkan pilihan (1-12) : "<<endl;
cin>>pilih;
switch (pilih){
case 1 :
cout<<"bulan Januari jumlah hari 31";
break;
case 2 :
if (tahun%400==0)
cout<<"bulan Februari jumlah hari 29";
else if (tahun%100==0)
cout<<"bulan Februari jumlah hari 28";
else if (tahun%4==0)
cout<<"bulan Februari jumlah hari 29";
else
cout<<"bulan Februari jumlah hari 28";
break;
case 3 :
cout<<"bulan Maret jumlah hari 31";
break;
case 4 :
cout<<"bulan April jumlah hari 30";
break;
case 5 :
cout<<"bulan Mei jumlah hari 31";
break;
case 6 :
cout<<"bulan Juni jumlah hari 30";
break;
case 7 :
cout<<"bulan Juli jumlah hari 31";
break;
case 8 :
cout<<"bulan Agustus jumlah hari 31";
break;
case 9 :
cout<<"bulan September jumlah hari 30";
break;
case 10 :
cout<<"bulan Oktober jumlah hari 31";
break;
case 11 :
cout<<"bulan November jumlah hari 30";
break;
case 12 :
cout<<"bulan Desember jumlah hari 31";
break;
default :
cout<<"periksa kembali input anda!";
break;
}
}
ostream& operator << (ostream& out, waktu& luar){
luar.seleksi();
return out;
}
int main(){
waktu x;
cin>>x;
cout<<x;
return 0;
}
Hasil run :
Algoritma, flowchart, dan program untuk mengecek apakah karakter yang dimasukkan itu merupakan huruf besar, huruf kecil, atau digit.
Jawab :
Algoritma karakter
{mengecek apakah karakter yang dimasukkan itu merupakan huruf besar, huruf kecil, atau digit}
Deklarasi
input : char
Deskripsi
if (input >= 'A' And input <='Z') then
write ("Huruf kapital")
else if (input >= 'a' And input <= 'z') then
write ("Huruf kecil")
else if (input >= '0' And input <= '9') then
write ("Digit")
else
write ("Periksa kembali inputan anda!")
end if
Flowchart
Program C++
#include <iostream>
using namespace std;
class karakter{
friend ostream& operator<<(ostream&, const karakter&);
friend istream& operator>>(istream&, karakter&);
public :
char input;
void seleksi();
};
istream& operator>>(istream& in, karakter& masuk){
cout<<"inputkan karakter : ";
in>>masuk.input;
return in;
}
void karakter::seleksi(){
if (input>='A'&&input<='Z'){
cout<<input<<" adalah huruf kapital";
}else if (input>='a'&&input<='z'){
cout<<input<<" adalah huruf kecil";
}else if (input>='0'&&input<='9'){
cout<<input<<" adalah digit";
}else{
cout<<"periksa kembali inputan anda";
}
}
ostream& operator << (ostream& out, karakter& keluar){
keluar.seleksi();
return out;
}
int main(){
karakter x;
cin>>x;
cout<<x;
}
Hasil run :
Comments