[OOP] Cài đặt lớp Phân Số

I.Introduction

Trong bài này mình xin chia sẽ cách cài đặt lớp Phân Số bằng ngôn ngữ lập trình C++ theo tư duy hướng đối tượng

II. Coding

Các bạn Mở VS C++ 6.0 lên và tạo Win32 Console Application.

image

Tiếp theo các bạn tạo các File để thực hiện cài đặt:

PhanSo.h : File chứa Code lớp Phân Số và giao diện cài đặt

PhanSo.cpp: File chứa Code định nghĩa các hành vi cho đối tượng Phân Số.

Main.cpp : Chứa Hàm main() để thực thi chương trình

image

PhanSo.h

   1: #ifndef _PhanSo_H

   2: #define _PhanSo_H

   3: class PhanSo

   4: {

   5:     private: 

   6:         int Tu , Mau ;

   7:     private:

   8:         void ToiGian();

   9:     public:

  10:         PhanSo(int tu = 0, int mau = 1);

  11:         void Xuat() const;

  12:         PhanSo Chia(PhanSo b) const;

  13:         PhanSo Cong(PhanSo b) const ;

  14:         PhanSo Tru(PhanSo b) const ;

  15:         PhanSo Nhan(PhanSo b) const ;

  16:         bool SoSanh(PhanSo b) const ;

  17:         void Nhap ();

  18: };

  19: #endif

PhanSo.cpp

   1: #include <iostream.h>

   2: #include"PhanSo.h"

   3: int UocChung(int a, int b)

   4: {

   5:     int r ;

   6:     while (b != 0)

   7:     {

   8:         r = a%b ;

   9:         a = b ;

  10:         b = r ;

  11:     }

  12:     return a ;

  13: }

  14: PhanSo::PhanSo(int tu , int mau)

  15: {

  16:     this->Tu = tu ;

  17:     this->Mau = mau ;

  18:     ToiGian();

  19: }

  20: void PhanSo::Xuat() const

  21: {

  22:     

  23:     if(this->Mau == 0) cout << "Error \n" ;

  24:     else

  25:         if(this->Mau != 1)

  26:             cout << Tu << "/" << Mau ;     

  27: }

  28: PhanSo PhanSo::Chia(PhanSo b) const

  29: {

  30:     

  31:     //kq.Tu = Tu*b.Mau;

  32:     //kq.Mau = Mau*b.Tu;

  33:     //kq.ToiGian();

  34:     //return kq;

  35:     return PhanSo(this->Tu*b.Mau,this->Mau*b.Tu);

  36: }

  37: void PhanSo::ToiGian()

  38: {

  39:     int UCLN = UocChung(Tu,Mau);

  40:     Tu /= UCLN;

  41:     Mau/= UCLN;

  42:     if(Mau < 0)

  43:     {

  44:         Tu = -Tu;

  45:         Mau = -Mau;

  46:     }

  47: }

  48: void PhanSo::Nhap()

  49: {

  50:     cout << "Tu So: " ; cin >> Tu ;

  51:     do {

  52:         cout << "Mau So (Khac 0): ";cin >> Mau ;

  53:     }

  54:     while (Mau == 0);

  55:     this->ToiGian();    

  56: }

  57: bool PhanSo::SoSanh(PhanSo b) const

  58: {

  59:     return this->Tu*b.Mau < this->Mau*b.Tu;

  60: }

  61: PhanSo PhanSo::Cong(PhanSo b) const

  62: {

  63:     return PhanSo((Tu*b.Mau) + (Mau*b.Tu),Mau*b.Mau);

  64: }

  65: PhanSo PhanSo::Nhan(PhanSo b) const

  66: {

  67:     return PhanSo(this->Tu*b.Tu,this->Mau*b.Mau);

  68: }

  69: PhanSo PhanSo::Tru(PhanSo b) const

  70: {

  71:     return PhanSo((Tu*b.Mau) - (Mau*b.Tu),Mau*b.Mau);

  72: }

Main.cpp
   1: #include <iostream.h>

   2: #include "PhanSo.h"

   3: int Menu();

   4: void Run(int task);

   5: void NhapLieu(PhanSo,PhanSo);

   6: void main ()

   7: {

   8:     int task;

   9:     while(task=Menu())

  10:         Run(task);

  11: }

  12: void Run(int task)

  13: {

  14:     PhanSo A,B,C;

  15:     switch (task)

  16:     {

  17:         

  18:         case 1: 

  19:             cout << "Nhap Phan So Thu Nhat\n" ;

  20:             A.Nhap();

  21:             cout << "Nhap Phan So Thu Hai \n" ;

  22:             B.Nhap();

  23:             C = A.Cong(B);

  24:             cout << "ket qua :"; A.Xuat();cout << " + ";

  25:             B.Xuat();cout << " = " ; C.Xuat();

  26:             cout << endl; 

  27:             cout << "------------------" << endl;

  28:             break;

  29:         case 2: 

  30:             cout << "Nhap Phan So Thu Nhat\n" ;

  31:             A.Nhap();

  32:             cout << "Nhap Phan So Thu Hai \n" ;

  33:             B.Nhap();

  34:             C = A.Tru(B);

  35:             cout << "ket qua :"; A.Xuat();cout << " - ";

  36:             B.Xuat();cout << " = " ; C.Xuat();

  37:             cout << endl; 

  38:             cout << "------------------" << endl;

  39:             break;

  40:         case 3: 

  41:             cout << "Nhap Phan So Thu Nhat\n" ;

  42:             A.Nhap();

  43:             cout << "Nhap Phan So Thu Hai \n" ;

  44:             B.Nhap();

  45:             C = A.Nhan(B);

  46:             cout << "ket qua :"; A.Xuat();cout << " x ";

  47:             B.Xuat();cout << " = " ; C.Xuat();

  48:             cout << endl; 

  49:             cout << "------------------" << endl;

  50:             break;

  51:         case 4: 

  52:             cout << "Nhap Phan So Thu Nhat\n" ;

  53:             A.Nhap();

  54:             cout << "Nhap Phan So Thu Hai \n" ;

  55:             B.Nhap();

  56:             C = A.Chia(B);

  57:             cout << "ket qua : ("; A.Xuat(); 

  58:             cout << ") / (";B.Xuat();

  59:             cout << ") = " ;C.Xuat() ;cout << endl; 

  60:             cout << "------------------" << endl;

  61:             break;

  62:     }

  63: }

  64: int Menu()

  65: {

  66:     cout << "Menu: \n";

  67:     cout << "1.Cong Hai Phan So \n" ;

  68:     cout << "2.Tru Hai Phan So \n" ;

  69:     cout << "3.Nhan Hai Phan So \n" ;

  70:     cout << "4.Chia Hai Phan So \n" ;

  71:     cout << "0.Thoat\n" ;

  72:     cout << "Ban chon:";

  73:     int n ;

  74:     cin >> n ;

  75:     return n ;

  76: }

Chạy chương trình và xem kết quả (Ctrl + F5)

image

9 thoughts on “[OOP] Cài đặt lớp Phân Số

  1. sau một năm gặp lại Nguyên, một sự khác biệt rất lớn. Chúc Nguyên thành công.Cố lên! một năm đủ gặt hái nhiều thành công!OK

    Like

  2. Bạn có thể tối giản hơn nữa code của mình, những phần giống nhau, sử dụng nhiều lần bạn nên dùng cách tạo hàm rồi truyền tham số

    Like

Leave a reply to nxqd Cancel reply