Phấn tích bài toán... Môỗi Khách hàng cấền qu n lý các thông tin sau: Mã KHảlà 1 sôấ nguyên, H tên, SĐT.. Có các phọ ương th c: ứa.. Săấp xêấp danh sách khách hàng theo Mã KHe.. Săấp xêấ
Trang 1TRƯỜNG Đ I H C GIAO THÔNG VÂN T I KHOA CÔNG NGH THÔNG TINẠ ỌẢỆ
Trang 21.Bài 1 (Bài 1 trong danh sách bài t p).ậ1.1 Đêề Bài.
1.Xấy d ng l p Stack ự ớ 2 Xấy d ng l p tính giá tr bi u th c ự ớ ị ể ứ 3 Viêất chương trình cho phép th c hi n các ch c năng sau:ự ệ ứ
Nh p vào m t bi u th c d ng trung tôấ ▪ ậ ộ ể ứ ạ
Chuy n bi u th c đó sang d ng h u tôấ ▪ ể ể ứ ạ ậ
Tính giá tr c a bi u th c▪ ị ủ ể ứ
1.2 Phấn tích bài toán L p Stack ớ
▪ Thu c tính:ộ- ‘items’: m ng ch a các phấền t c a ngăn xêấp.ả ứ ử ủ- ‘top’: Ch sôấ c a phấền t đ nh trong ngăn xêấp.ỉ ủ ử ỉ▪ Phương th c: ứ
- ‘Stack ( )’: Hàm kh i t o, kh i t o giá tr ban đấềuở ạ ở ạ ịcho ‘top’
- ‘push (char item)’: Thêm m t phấền t vào đ nhộ ử ỉngăn xêấp
- ‘pop ( )’: Lo i b và tr vêề giá tr c a phấền t đ nhạ ỏ ả ị ủ ử ỉmà không lo i b nó.ạ ỏ
- ‘peek ( )’: Lấấy m t phấền t đấều c a ngăn xêấp màộ ử ủkhông xóa phấền t đó ử
- ‘isEmpty ( )’:Ki m tra xem ngăn xêấp có trôấng không ể
Chương trình.
Trang 3▪ Phương th c: ứ
- ‘main ( )’: Hàm chính c a chủ ương trình, th c hi nự ệvi c nh p, chuy n đ i và tính toán.ệ ậ ể ổ
- ‘f(int a, int b, char e)’: Hàm tính toán giá tr c a haiị ủsôấ
1.3 Cài đ t các l p và hàm main băềng C++.ặớL p Stack: ớ
template<class Object>class Stack{
private:int n; //Sôấ phấền t tôấi đaửObject *S;
int t; //L u ch sôấ pt vào cuôấi cùngư ỉpublic:
Stack(int c)bool empty();
//Cách xấy d ngựbool isEmpty() { return c == 0 ? true : false;
}bool full();
//Cách xấy d ngự
Trang 4bool isEmpty() { return c == n ? true : false;
}int size();int top();int push(Object o);int pop(Object &o);}
Hàm Main
Stack<int> S; //S d ng Stack v i ki u int.ử ụ ớ ểS.push(item) //thêm phấền t vào ngăn xêấp.ửS.pop(item) // lo i b phấền t cuôấi cùng c a ngăn xêấp.ạ ỏ ử ủS.top(item) // phấền t cuôấi cùng c a ngăn xêấp.ử ủ
1.4 Phấn tích th i gian ch y c a t ng phờạ ủ ừương th c cóứtrong các l p.ớ
Code c a bài: ủ
Trang 62 ng d ng l p Vector đ xấy d ng l p qu n lý các đôấi tỨ ụ ớ ể ự ớ ả ượng làcác Khách hàng Môỗi Khách hàng cấền qu n lý các thông tin sau: Mã KHảlà 1 sôấ nguyên, H tên, SĐT Có các phọ ương th c: ứ
a Nh p thêm các khách hàng, sau khi hoàn thành nh pậ ậthông tin c a m t khách hàng, chủ ộ ương trình đ a ra cấu h iư ỏcó nh p n a không (y/n)? Nêấu ngậ ữ ười dùng nh p: Y thì tiêấpật c nh p, nh p N thì kêất thúc ụ ậ ậ
b Xóa đi m t khách hàng theo sôấ đi n tho i ộ ệ ạc S a đ i thông tin h tên, SĐT c a m t khách hàng bấất kỳử ổ ọ ủ ộtrong danh sách
d Săấp xêấp danh sách khách hàng theo Mã KHe Săấp xêấp danh sách khách hàng theo h tên f Hi n thọ ể ịtoàn b danh sách khách hàng hi n có ộ ệ
g Ghi danh sách khách hàng vào file
2.2 Phấn tích bài toán.
Trang 7Phương th c quick-sort.ứCode t ng quát:ổ
Pivot = a[right];I = left -1;For(j = left; j < right ; j++){
I++;Swap( a[i] , a[j] );}
Quick-sort( a, left, i);Quick-sort( a, I + 2, right);
L p Vector.ớThu c tính:ộ
1 ‘vector::allocator_type’: Ki u alloctor để ượ ử ục s d ng đểcấấp phát b nh cho các phấền t ộ ớ ử
2 ‘vector::value_type’: Ki u c a các phấền t trong vector.ể ủ ử3 ‘vector::size_type’: Ki u unsigned integer, thể ường là`size_t`, đượ ử ục s d ng đ bi u diêỗn kích thể ể ướ ủc c a vector
Phương th c:ứ
- `vector()`: Constructor m c đ nh, t o m t vector trôấng.ặ ị ạ ộ - `vector(size_type n)`: Constructor v i sôấ lớ ượng phấền tửvà giá tr m c đ nh.ị ặ ị
Trang 8- `vector(size_type n, const value_type& val)`: Constructorv i sôấ lớ ượng phấền t và giá tr ban đấều.ử ị
- `vector(const vector& x)`: Constructor sao chép - `~vector()`: Destructor
- `size()`: Tr vêề sôấ phấền t trong vector.ả ử - `capacity()`: Tr vêề sôấ lả ượng phấền t tôấi đa mà vector cóửth ch a mà không cấền ph i cấấp phát thêm b nh ể ứ ả ộ ớ
- `reserve(size_type n)`: Đ m b o răềng vector có th ch aả ả ể ứít nhấất `n` phấền t mà không cấền ph i cấấp phát thêm bử ả ộnh ớ
- `operator[]`: Tr vêề tham chiêấu đêấn phấền t t i v trí `i`.ả ử ạ ị - `at(size_type i)`: Tr vêề tham chiêấu đêấn phấền t t i v tríả ử ạ ị`i` v i ki m tra biên.ớ ể
- `push_back(const value_type& val)`: Thêm phấền t vàoửcuôấi vector
- `pop_back()`: Xoá phấền t cuôấi cùng.ử - `insert(iterator position, const value_type& val)`: Chènm t phấền t vào vector t i v trí `position`.ộ ử ạ ị
- `erase(iterator position)`: Xoá phấền t t i v trí `position`.ử ạ ị - `sort(first, last)`: Săấp xêấp các phấền t trong ph m viử ạ`[first, last)`
- `begin()`: Tr vêề iterator đêấn phấền t đấều tiên.ả ử - `end()`: Tr vêề iterator đêấn phấền t sau phấền t cuôấiả ử ửcùng
- `clear()`: Xoá tấất c các phấền t ả ử
Trang 9- `empty()`: Ki m tra xem vector có trôấng không.ể - `front()`: Tr vêề tham chiêấu đêấn phấền t đấều tiên.ả ử - `back()`: Tr vêề tham chiêấu đêấn phấền t cuôấi cùng.ả ử - `assign(first, last)`: Gán giá tr t dãy `[first, last)` vàoị ừvector.
2.3 Cài đ t các l p và hàm main băềng c++.ặớL p Vector:ớ
template <typename T>class Vector {
private:vector<T> v;public:
Vector() {} // Thêm phấền t vào vectorử void push_back(const T& element) { v.push_back(element);
} // Hi n th vectorể ị void display() const { for (const T& element : v) { cout << element << " "; }
Trang 10cout << endl; }
// Săấp xêấp vector băềng thu t toán QuickSortậ // Hàm so sánh đ ược truyêền vào đ có th săấp xêấp theoể ểnhiêều cách khác nhau
#include <iostream>#include <vector>template <typename T>int partition(vector<T>& arr, int left, int right) { T pivot = arr[right];
int i = left - 1; for (int j = left; j < right; j++) { if (arr[j] <= pivot) { i++;
swap(arr[i], arr[j]); }
} swap(arr[i + 1], arr[right]); return i + 1;
}template <typename T>void quickSort(vector<T>& arr, int left, int right) {
Trang 11if (left < right) { int pivotIndex = partition(arr, left, right);
quickSort(arr, left, pivotIndex - 1); quickSort(arr, pivotIndex + 1, right); }
}
Hàm Main:
int main() { vector<int> arr; int n = arr.size(); cout << "Dãy đã nh p là: ";ậ for (int num : arr) { cout << num << " "; }
cout << endl; quickSort(arr, 0, n - 1); cout << "Ngăn săấp xêấp tăng dấền: "; for (int num : arr) {
cout << num << " "; }
cout << endl
Trang 12return 0;};
2.4 Phấn tích th i gian ch y c a t ng phờạ ủ ừương th c cóứtrong các l p.ớ
Code Bài 2:Ví d minh h a: ụọ