1. Đề thi Lập trình hướng đối tượng, ĐH Công Nghệ Thông Tin
2. Lời giải đề thi lập trình hướng đối tượng
Câu 1
a.
b.
- Chương trình lỗi khi khởi tạo: Array M1; Do class Array thiếu hàm khởi tạo mặc định. Sửa lỗi: Khai báo thêm constructor Array() { }
- Lỗi ko thể truy xuất biến M2.A[3] do class khai báo mảng A ở thuộc tính private, khắc phục: Thêm từ khóa public trước int A[100];
Câu 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
class ThoiGian
{
private:
int gio, phut, giay;
bool hople(int, int, int);
public:
ThoiGian() { }
ThoiGian(int, int, int);
friend istream& operator >> (istream& is, ThoiGian &a);
friend ostream& operator << (ostream& os, ThoiGian a);
void Giam();
ThoiGian& operator--();
ThoiGian operator--(int);
};
bool ThoiGian::hople(int x, int y, int z)
{
return (x >= 0 && y >= 0 && z >= 0 && y <= 59 && z <= 59);
}
ThoiGian::ThoiGian(int x, int y, int z)
{
gio = x;
phut = y;
giay = z;
}
void ThoiGian::Giam()
{
if (hople(gio, phut, giay - 1))
*this = ThoiGian(gio, phut, giay - 1);
else
if (hople(gio, phut - 1, 59))
*this = ThoiGian(gio, phut - 1, 59);
else
*this = ThoiGian(gio - 1, 59, 59);
}
ThoiGian & ThoiGian::operator--()
{
Giam();
return *this;
}
ThoiGian ThoiGian::operator--(int)
{
ThoiGian tmp(gio, phut, giay);
Giam();
return tmp;
}
istream & operator>>(istream & is, ThoiGian & a)
{
is >> a.gio >> a.phut >> a.giay;
return is;
}
ostream & operator<<(ostream & os, ThoiGian a)
{
os << a.gio << ":" << a.phut << ":" << a.giay << endl;
return os;
}
|
Câu 3
Ở đối tượng button sẽ có 2 loại là button text (gồm màu nền, text, màu text) và button image(ko có màu nền, text, và màu text), mình quản lí các màu bằng các số từ 1-12 và coi như button image có màu nền và màu text là 0
a. Các khai báo class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
class ThanhPhan
{
protected:
string text;
int mauText;
int mauNen;
public:
ThanhPhan();
virtual ~ThanhPhan();
virtual void nhap();
virtual int getMauNen();
virtual int getMauText();
};
class Nhan :
public ThanhPhan
{
public:
Nhan();
~Nhan();
void nhap();
};
class Nut :
public ThanhPhan
{
public:
Nut();
~Nut();
void nhap();
};
|
b. Code cho thành phần các class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
ThanhPhan::ThanhPhan()
{
text = "";
mauNen = 0;
mauText = 0;
}
ThanhPhan::~ThanhPhan()
{
}
void ThanhPhan::nhap()
{
cout << "Chon mau bang so duoi day : \n";
cout << "1. Red, 2. Orange, 3.Yellow, 4. Spring Green\n";
cout << "5. Red, 6. Orange, 7.Yellow, 8. Spring Green\n";
cout << "9. Red, 10. Orange, 11.Yellow, 12. Spring Green\n";
cout << "Chon mau nen : ";
cin >> mauNen;
cout << "Chon mau text : ";
cin >> mauText;
cin.ignore();
cout << "Nhap text : ";
getline(cin, text);
}
int ThanhPhan::getMauNen()
{
return mauNen;
}
int ThanhPhan::getMauText()
{
return mauText;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Nhan::Nhan()
{
}
Nhan::~Nhan()
{
}
void Nhan::nhap()
{
cout << "Nhap label: \n";
ThanhPhan::nhap();
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include "Nut.h"
Nut::Nut()
{
}
Nut::~Nut()
{
}
void Nut::nhap()
{
cout << "Nhap button: \n";
cout << "Chon 1: Nhap button image\n Chon 2: Button text\n";
int tl;
cin >> tl;
if (tl == 1)
{
cout << "Nhap button image: \n";
cout << ".....Xog!!";
text = "";
mauNen = 0;
mauText = 0;
}
else
{
cout << "Nhap button text: \n";
ThanhPhan::nhap();
}
}
|
c. Code xử lí yêu cầu đề bài
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#include <iostream>
#include "ThanhPhan.h"
#include "Nhan.h"
#include "Nut.h"
using namespace std;
bool isMauBoTuc(int x, int y)
{
return abs(x - y) == 6;
}
bool isMauTuongDong(int x, int y, int z) // x, y, z tang dan
{
int data[15] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,1,2 };
return (data[x + 1] == y && data[x + 2] == z);
}
int main()
{
ThanhPhan* DS[1000];
int n;
cout << "Nhap so luong thanh phan : ";
cin >> n;
for (int i = 0; i < n; i++)
{
cout << "Chon 1: Nhap Label\nChon 2: Nhap button\n";
int tl;
cin >> tl;
if (tl == 1)
DS[i] = new Nhan();
else
DS[i] = new Nut();
DS[i]->nhap();
cout << endl << endl;
}
//cau b
if (isMauBoTuc(DS[0]->getMauNen(), DS[0]->getMauText()))
cout << "Thanh phan dau tien la mau bo tuc!\n";
else
cout << "Thanh phan dau tien Khong la mau bo tuc!\n";
//cau c
int dd[13];
for (int i = 0; i <= 12; i++)
dd[i] = 0;
for (int i = 0; i < n; i++)
dd[DS[i]->getMauNen()]++;
int spt = 0;
int mau[13];
for (int i = 1; i <= 12; i++)
if (dd[i] != 0)
mau[spt++] = i;
cout << "Mau nen cac thanh phan: ";
if (spt == 1)
cout << "Theo nguyen tac: mau don sac\n";
else
if (spt == 2 && isMauBoTuc(mau[0], mau[1]))
cout << "Theo nguyen tac: Mau bo tuc\n";
else
if (spt == 3 && isMauTuongDong(mau[0], mau[1], mau[2]))
cout << "Theo nguyen tac: Mau tuong dong\n";
else
cout << "Khong theo nguyen tac nao!\n";
return 0;
}
|
Link download full code: https://drive.google.com/file/d/0B0MpXzUlukFAbV9PUnJoallWeDg/view?usp=sharing
No comments:
Post a Comment