[Lập trình hướng đối tượng – OOP] Bài tập cơ bản về lớp (class) – Thực hành 2

Bài tập: Class căn bản, Phương pháp lập trình hướng đối tượng

Bài tập: Class căn bản, Phương pháp lập trình hướng đối tượng

Bài tập 1 Lập trình hướng đối tượng

Bài 1:

Thiết lập lớp PhanSo để biểu diễn khái niệm phân số với hai thành phần dữ liệu tử số, mẫu số và các hàm thành phần cộng, trừ, nhân, chia hai phân số, các hàm thành phần xuất, nhập, định giá trị cho phân số. Viết chương trình cho phép nhập vào hai phân số, in ra kết quả các phép toán cộng, trừ, nhân, chia hai phân số kể trên.

Code tham khảo

#include <iostream>
using namespace std;

class PhanSo
{
private:
    int tu, mau;
public:
    void set(int t, int m)
    {
        tu = t;
        mau = m;
    }

    void nhap()
    {
        cout << "Nhap lan luot tu va mau cua phan so : ";
        cin >> tu >> mau;
    }
    void xuat()
    {
        cout << tu << "/" << mau << endl;
    }
    void cong(PhanSo a)
    {
        tu = tu*a.mau + mau*a.tu;
        mau = mau*a.mau;
    }
    void tru(PhanSo a)
    {
        tu = tu*a.mau - mau*a.tu;
        mau = mau*a.mau;
    }
    void nhan(PhanSo a)
    {
        tu = tu*a.tu;
        mau = mau*a.mau;
    }
    void chia(PhanSo a)
    {
        tu = tu*a.mau;
        mau = mau*a.tu;
    }
};

int main()
{
    PhanSo a, b, c;
    a.nhap();
    b.nhap();
    //////////////////
    cout << "Cong = ";
    c = a;
    c.cong(b);
    c.xuat();
    //////////////////
    cout << "Tru = ";
    c = a;
    c.tru(b);
    c.xuat();
    //////////////////
    cout << "Nhan = ";
    c = a;
    c.nhan(b);
    c.xuat();
    //////////////////
    cout << "chia = ";
    c = a;
    c.chia(b);
    c.xuat();

    system("pause");
    return 0;
}

Bài tập 2 Lập trình hướng đối tượng

Bài 2:

Xây dựng lớp biểu diễn khái niệm số phức với hai thành phần dữ liệu thực, ảo và các hàm thành phần xuất, nhập, định giá trị cho số phức, cộng, trừ, nhân, chia hai số phức. Viết chương trình cho phép nhập vào hai số phức, in ra kết quả các phép toán cộng, trừ, nhân, chia hai số phức kể trên.

sophuc

Code tham khảo

#include <iostream>
using namespace std;

class sophuc
{
private:
    float thuc, ao;
public:
    sophuc() {}
    sophuc(float t, float a)
    {
        thuc = t;
        ao = a;
    }
    void nhap();
    void xuat();
    void cong(sophuc a);
    void tru(sophuc a);
    void nhan(sophuc a);
    void chia(sophuc a);
    ~sophuc() {};
};

void sophuc::nhap()
{
    cout << "Nhap phan lan luot phan thuc ao so phuc : ";
    cin >> thuc >> ao;
}

void sophuc::xuat()
{
    cout << "(" << thuc << " ";
    if (ao >= 0)
        cout << "+ " << ao << "i)";
    else
        cout << ao << "i)";
}


void sophuc::cong(sophuc a) // cong 2 so phuc
{
    thuc += a.thuc;
    ao += a.ao;
}

void sophuc::tru(sophuc a) // tru 2 so phuc
{
    thuc -= a.thuc;
    ao -= a.ao;
}
void sophuc::nhan(sophuc a) // tru 2 so phuc
{
    sophuc z;
    z.thuc = thuc*a.thuc - ao*a.ao;
    z.ao = thuc*a.ao + ao*a.thuc;
    *this = z;
}

void sophuc::chia(sophuc a) // tru 2 so phuc
{
    sophuc z;
    z.thuc = (thuc*a.thuc + ao*a.ao) / (a.thuc*a.thuc + a.ao*a.ao);
    z.ao = (ao*a.thuc - thuc*a.ao) / (a.thuc*a.thuc + a.ao*a.ao);
    *this = z;
}

int main()
{
    sophuc a, b, z;
    a.nhap();
    b.nhap();

    // cộng
    z = a;
    z.cong(b);
    a.xuat(); cout << " + "; b.xuat(); cout << " = "; z.xuat(); cout << endl;
    // trừ
    z = a;
    z.tru(b);
    a.xuat(); cout << " - "; b.xuat(); cout << " = "; z.xuat(); cout << endl;
    // nhân
    z = a;
    z.nhan(b);
    a.xuat(); cout << " * "; b.xuat(); cout << " = "; z.xuat(); cout << endl;
    //chia
    z = a;
    z.chia(b);
    a.xuat(); cout << " / "; b.xuat(); cout << " = "; z.xuat(); cout << endl;
    system("pause");
    return 0;
}

Bài tập 3 Lập trình hướng đối tượng

Bài 3:

Xây dựng lớp Candidate (Thí sinh) gồm các thuộc tính: mã, tên, ngày tháng năm sinh, điểm thi Toán, Văn, Anh và các phương thức cần thiết.

Xây dựng lớp TestCandidate để kiểm tra lớp trên:

– Nhập vào n thí sinh (n do người dùng nhập)

– In ra thông tin về các thí sinh có tổng điểm lớn hơn 15

Lưu ý: Phần dưới đây mình đã làm sai yêu cầu đề bài, nhưng do chưa có thời gian điều chỉnh, nên các bạn chú ý là nó không đúng nhé. Phải xây dựng class TestCandidate trong đó có mảng chứa Candidate và thực hiện yêu cầu của nó, chứ không phải làm theo cách dưới đây – Mình đã làm thiếu class TestCandidate.

Code tham khảo

// Mình sẽ viết kiểu include file để tập làm quen với các cách viết khác nhau:

Candidate.h

#include <iostream>
#include <string>
using namespace std;
#pragma once
class Candidate
{
private:
    string ma, ten, ngaysinh;
    float van, toan, anh;

public:
    Candidate();
    ~Candidate();
    void nhap();
    float tongdiem();
    void xuat();
    void tren15();
};

 

Candidate.cpp

#include "Candidate.h"

using namespace std;
void Candidate::nhap()
{
    cin >> ma >> ten >> ngaysinh >> van >> toan >> anh;
}

Candidate::Candidate(){}

float Candidate::tongdiem()
{
    return van + toan + anh;
}

void Candidate::xuat()
{
    cout << ma << " - "<< ten << " - " << ngaysinh << " | " << van
        << " | " << toan << " | " << anh << endl;
}
void Candidate::tren15()
{
    if (Candidate::tongdiem() > 15)
        Candidate::xuat();
}

Candidate::~Candidate(){}

 

Main.cpp

#include <iostream>
#include "Candidate.h"
using namespace std;

int main()
{
    int n;
    Candidate a[100];
    cin >> n;
    for (int i = 1; i <= n; i++)
        a[i].nhap();
    cout << "Diem tren 15: \n";
    for (int i = 1; i <= n; i++)
        a[i].tren15();
    system("pause");
    return 0;
}

Đây là test mẫu:

input:

6
UIT16521001 Miticc01 01/01/1998 9 8 10
UIT16521002 Miticc02 01/02/1998 1 2 5
UIT16521003  Miticc03 01/03/1998 6.5 7 2
UIT16521004 Miticc04 01/04/1998  0 0.5 1
UIT16521005 Miticc05 01/05/1998 9.5 9.5 10
UIT16521215 Miticc06 1998 7.5 9.5 8.75

output

Diem tren 15:
UIT16521001 - Miticc01 - 01/01/1998 | 9 | 8 | 10
UIT16521003 - Miticc03 - 01/03/1998 | 6.5 | 7 | 2
UIT16521005 - Miticc05 - 01/05/1998 | 9.5 | 9.5 | 10
UIT16521215 - Miticc06 - 1998 | 7.5 | 9.5 | 8.75

Đặng Minh Tiến – 14/07/2016

2 thoughts on “[Lập trình hướng đối tượng – OOP] Bài tập cơ bản về lớp (class) – Thực hành 2

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *