[CƠ SỞ LẬP TRÌNH] – BÀI TẬP STRUCT TRONG C++ (PHẦN 2)

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)

Bình luận về bài viết này