Bài 4: Viết chương trình thao tác trên các số phức (Complex) với các thao tác sau: nhập số phức, xuất số phức ra màn hình, cộng, trừ các số phức.
Bài 5: Viết chương trình thao tác trên các phân số với các thao tác sau: nhập phân số, xuất phân số ra màn hình, tối giản phân số, cộng, trừ, nhân, chia các phân số.
Bài 4: Viết chương trình thao tác trên các số phức (Complex) với các thao tác sau:
- Nhập số phức,
- Xuất số phức ra màn hình,
- Cộng, trừ các số phức.
Hướng dẫn:
Khai báo kiểu cấu trúc SoPhuc
struct SoPhuc
{
float thuc, ao;
};
Hàm nhập số phức
void Nhap(SoPhuc& z1, SoPhuc& z2)
{
cout << “\nSo phuc z1:\n\tPhan thuc: “; cin >> z1.thuc;
cout << “\tPhan ao: “; cin >> z1.ao;
cout << “\nSo phuc z2:\n\tPhan thuc: “; cin >> z2.thuc;
cout << “\tPhan ao: “; cin >> z2.ao;
}
Hàm xuất số phức
void Xuat(SoPhuc z)
{
if (z.thuc != 0)
cout << z.thuc;
if (z.ao != 0)
{
if (z.ao == -1)
cout << “-i”;
else
if (z.ao == 1)
{
if (z.thuc != 0)
cout << “+i”;
else
cout << “i”;
}
else
{
if (z.thuc != 0 && z.ao > 0)
cout << “+” << z.ao << “i”;
else
cout << z.ao << “i”;
}
}
if (z.thuc == 0 && z.ao == 0)
cout << “0”;
cout << endl;
}
Hàm tính tổng hai số phức
void Tong(SoPhuc z1, SoPhuc z2)
{
SoPhuc z;
z.thuc = z1.thuc + z2.thuc;
z.ao = z1.ao + z2.ao;
cout << “\nz1 + z2 = “;
Xuat(z);
}
Hàm tính hiệu hai số phức
void Hieu(SoPhuc z1, SoPhuc z2)
{
SoPhuc z;
z.thuc = z1.thuc – z2.thuc;
z.ao = z1.ao – z2.ao;
cout << “\nz1 – z2 = “;
Xuat(z);
}
Code chương trình hoàn chỉnh:
Kết quả:
Bài 5: Viết chương trình thao tác trên các phân số với các thao tác sau:
- Nhập phân số,
- Xuất phân số ra màn hình,
- Tối giản phân số,
- Cộng, trừ, nhân, chia các phân số.
Hướng dẫn:
Khai báo kiểu cấu trúc PhanSo
struct PhanSo
{
int tu, mau;
};
Hàm nhập phân số
void NhapPS(PhanSo& ps)
{
cout << “\nTu so: “; cin >> ps.tu;
do
{
cout << “\nMau so: “; cin >> ps.mau;
if (ps.mau == 0)
cout << “\nKhong ton tai phan so. Nhap mau so != 0.”;
} while (ps.mau == 0);
}
Hàm xuất phân số
void XuatPS(PhanSo ps)
{
int UC;
UC = UCLN(ps.tu, ps.mau);
ps.tu /= UC;
ps.mau /= UC;
if (ps.tu == ps.mau)
cout << “1”;
else
if (ps.tu == (ps.mau * -1))
cout << “-1”;
else
if (ps.tu == 0)
cout << “0”;
else
if (ps.mau < 0)
cout << (ps.tu * -1) << “/” << (ps.mau * -1);
else
cout << ps.tu << “/” << ps.mau;
}
Hàm tìm ước chung lớn nhất
int UCLN(int a, int b)
{
a = abs(a);
b = abs(b);
if (a == 0 || b == 0)
return a + b;
while (a!=b)
{
if (a > b)
a -= b;
else
b -= a;
}
return a;
}
Hàm tính tổng hai phân số
void CongPS(PhanSo a, PhanSo b)
{
PhanSo t;
t.tu = a.tu * b.mau + b.tu * a.mau;
t.mau = a.mau * b.mau;
cout << “\nKet qua phep cong: “; XuatPS(t);
}
Hàm tính hiệu hai phân số
void TruPS(PhanSo a, PhanSo b)
{
PhanSo t;
t.tu = a.tu * b.mau – b.tu * a.mau;
t.mau = a.mau * b.mau;
cout << “\nKet qua phep tru: “; XuatPS(t);
}
Hàm tính tích hai phân số
void NhanPS(PhanSo a, PhanSo b)
{
PhanSo t;
t.tu = a.tu * b.tu;
t.mau = a.mau * b.mau;
cout << “\nKet qua phep nhann: “; XuatPS(t);
}
Hàm tính thương hai phân số
void ChiaPS(PhanSo a, PhanSo b)
{
PhanSo t;
t.tu = a.tu * b.mau;
t.mau = a.mau * b.tu;
cout << “\nKet qua phep chia: “; XuatPS(t);
}
Code chương trình hoàn chỉnh:
Kết quả:
Tác giả: Lê Thị Mỹ Hậu (sinh viên lớp 21DTH3, khoa Công Nghệ Thông Tin)