Sử dụng vòng lặp `for` để kiểm tra từng ph” tử trong mảng, nếu tìm thấy một ph tử là số dương lẻ, hàm `containsOddPositiveNumbers` sẽ trả v`ề`true` và chương trình sẽ in ra thông báo "M
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỞNG ĐẠI HỌC VĂN HIẾN KHOA CÔNG NGHỆ THÔNG TIN
Trang 2PHAN 1 DAC TA BAI TOAN sccssssssssssssesesssesscesnsnessssssnsecesnseeceesunetessssnsceessnseeceenneeesstees 3 I— Bài tập CA mh@teesescccceescssseesssssssessssssssesssssesessssseessssssseessssssessssssesssssnivessssssessneesssesn 3
1 Cho biết số lượng các số nguyên dương không chia hết đ ng thời cho 3 và 8 3
2 Cho biết trong mảng có bao nhiêu số hoàn thiện s5 5555 vs se 4
3 Cho biết trong mảng có bao ø ôn tat ca cdc ph %® tử là số dương lẻ hay không? 6
4 Đảo ngược thứ tự các phẦn tử trong mảng - - + Sc S2 ssirerrerrerrrrerxee 7
I ; i8]: 0 9
PHẦN2_ HIỆN THỰC CHƯƠNG TRÌNH 22-22st2EEEt22EE22EE2EEE2EEEEEtEErerrerree 10
T Bal tap CA Man cố .e 12
In ranh 17
KG t LOAN 24
Trang 3PHẦNI_ ĐẶC TẢ BÀI TOÁN
L Bài tập cá nhân:
I Cho biết số lượng các số nguyên dương không chia hết đ ông thời cho 3 và 8
Để tìm số lượng các số nguyên dương không chia hét dng thoi cho 3 và 8, chúng ta sử dụng một hàm `isDivisibleByThreeAndEightQ` để kiểm tra một số nguyên có chia hết cho
cả 3 và 8 hay không Dưới đây là cách triển khai hàm `isDivisibleByThreeAndEightQ` và tính số lượng các số nguyên dương không chia hết đ ông thời cho 3 và 8:
Đoạn code:
// Ham kiém tra số nguyên dương có chia hết cho cả 3 và 8 hay không
bool 1sDivisibleByThreeAndEight(int num) {
return (num % 3 != 0) && (num % 8 != 0);
cout << "Nhập các phẦn tử của mảng: " << endl;
for (int 1 = 0; 1 < size; i++) {
cout << "Ph tử thứ "<<1+ 1 <<": ";
cin >> arr[i];
t
int count = 0;
for (int 1 = 0; 1 < size; i++) {
if (isDivisibleByThreeAndEight(arr[i]) && arr[i] > 0) {
count++;
a
Trang 4t
cout << "Số lượng các số nguyên dương không chia hết đ ông thời cho 3 và 8: " << count
<< endl;
return 0;
Dùng vòng lap `for` để kiểm tra từng ph %h tử của mảng, nếu phần tử đó là số nguyên dương
và không chia hết cho cả 3 và 8, thì `count` sẽ được tăng lên một đơn vị
2 Cho biết trong mảng có bao nhiêu số hoàn thiện
Để tính số lượng các số hoàn thiện trong một mảng, chúng ta sử dụng một hàm
`isPerfectNumberQ` để kiểm tra một số nguyên có phải là số hoàn thiện hay không Hàm ¡isPerfectNumber() : là một hàm trong lập trình được sử dụng để kiểm tra một số có phải là số hoàn hảo hay không Số hoàn hảo là số nguyên dương mà tổng các ước của nó (không kể chính nó) bằng chính nó
Ta c3 làm như sau:
1.Khai báo và khởi tạo một biến đếm số lượng số hoàn thiện ban đ`ầi bằng 0
2.Dùng vòng lặp để duyệt qua từng ph % tr trong mang
3.Trong mỗi Lần lặp, kiểm tra xem ph tử hiện tại có phải là số hoàn thiện hay không
4.Nếu là số hoàn thiện, tăng biến đếm lên 1
5.Sau khi duyệt hết mảng, biến đếm sẽ chứa số lượng số hoàn thiện trong mảng
Dưới đây là cách triển khai hàm `isPerfectNumberQ` và tính số lượng các số hoàn thiện trong mảng:
// Hàm kiểm tra số hoàn thiện
bool isPerfectNumber(int num) {
int sum = 0;
Trang 5cout << "Nhập các phẦn tử của mảng: " << endl;
for (int 1 = 0; 1 < size; i++) {
Sử dụng vòng lặp `for` để kiểm tra từng ph tử trong mảng, nếu ph tử đó là số hoàn
thiện, thì `count` sẽ được tăng lên một đơn vị Cuối cùng, in ra số lượng các số hoàn thiện trong mảng
a
Trang 63 Cho biết trong mảng có bao g Gm tất cả các ph” tử là số dương lẻ hay không?
Sử dụng vòng lặp `for` để kiểm tra từng ph” tử trong mảng, nếu tìm thấy một ph tử là số
dương lẻ, hàm `containsOddPositiveNumbers()` sẽ trả v`ề`true` và chương trình sẽ in ra
thông báo "Mảng chứa các phẦn tử số dương lẻ" Ngược lại, nếu không tìm thấy ph tử nào
NAS
thỏa mãn, hàm sẽ trả v`ề`false` và chương trình sẽ in ra thông bao "Mang khéng chtra cdc
phẦn tử số dương lẻ"
Đoạn code :
// Hàm kiểm tra mảng có chứa số dương lẻ hay không
bool containsOddPositiveNumbers(int arr[], int size) {
for (int 1 = 0; 1 < size; i++) {
if (arrfi] > O && arr[i] % 2 != 0) {
cout << "Nhập các phẦn tử của mảng: " << endl;
for (int 1 = 0; 1 < size; i++) {
cout << "Ph tử thứ "<<1+ 1 <<": ";
cin >> arr[i];
Trang 7Sử dụng vòng lặp `for` để kiểm tra từng ph” tử trong mảng, nếu tìm thấy một ph tử là số
dương lẻ, hàm `containsOddPositiveNumbers()` sẽ trả v`ề`true` và chương trình sẽ in ra
thông báo "Mảng chứa các phẦn tử số dương lẻ" Ngược lại, nếu không tìm thấy ph tử nào
thỏa mãn, hàm sẽ trả v`ề`false` và chương trình sẽ in ra thông báo "Máng không chứa các
phẦn tử số dương lẻ"
Hàm `containsOddPositiveNumbers()` nhận đẦầi vào là một mảng `arr` và kích thước của mảng `size` Sử dụng vòng lặp `for` để kiểm tra từng ph” tử trong mảng, và nếu một ph
tử không phải số dương lẻ (` !(arr[i] > 0 && arr[i] % 2 != 0)`), hàm sẽ trả v`ề`false`, ngụ ý
rằng mảng không chứa tất cả các ph tử là số dương lẻ Nếu tất cả các ph3n tử đ`ầi là số
NAS
dương lẻ, hàm sẽ trả v`ê`true`
4 Đảo ngược thứ tự các ph % ti trong mảng
Để đảo ngược thứ tự các phần tử trong một mảng, chúng ta có thể sử dụng một hàm
`reverseArrayQ)`
Dưới đây là cách triển khai hàm `reverseArray(Q` để đảo ngược thứ tự các ph tử trong mảng:
Đoạn code:
void reverseArray(int arr[], int size) {
// Sw dung ham reverse trong thr vién algorithm dé dao ngược thứ tự các ph tử trong mang
reverse(arr, atr + size);
Trang 8int size = sizeof(myArray) / sizeof(myArray[0]);
cout << "Mang truoc khi dao nguoc: ";
for (int 1 = 0; 1 < size; i++) {
cout << myArray[i] << Won,
,
reverseArray(myArray, size);
cout << "\nMang sau khi dao nguoc: ";
for (int 1 = 0; 1 < size; i++) {
cout << myArray[i] << Won,
,
return 0;
Giải thích:
1.Hàm `reverseArray` nhận vào một mảng (`arr`) và kích thước của mảng (ˆsize`)
2.Trong hàm này, chúng ta sử dụng hàm `reverse` từ thư viện algorithm để đảo ngược thứ tự
các ph tử trong mảng Hàm `reverse` nhận vào hai iterator (con trỏ) trỏ đến ph tr du
và phan tử cuối của mảng
3.Trong vi dụ sử dụng, chúng ta tạo một mảng `myArray` với các ph % tử từ 1 đến 5
4.Sử dụng phép tính `sizeof` để tính kích thước của mảng và chia cho kích thước của một phần tử để thu được số lượng phần tử (size`) trong mảng
5.Trong hàm `main`, chúng ta sử dụng hàm `cout` để in ra mảng trước khi đảo ngược 6.Tiếp theo, chúng ta gọi hàm `reverseArray` và truy mảng `myArray` và kích thước của mảng làm đối sỡ
7.Sau khi hàm `reverseArray` thực hiện việc đảo ngược mảng, chúng ta tiếp tục sử dụng hàm `cout` để¡n ra mảng sau khi đảo ngược
Trang 9IL Bài tập nhóm:
1 Xây dựng chương trình quản lý thiết bị tại I công ty
Thông tin một thiết bị øg ăn có: Mã thiết bị, tên thiết bị, nhà sản xuất, chức năng, mô tả, ngày nhập, giá thành
L1 -Nhập danh sách các thiết bị
L] -Nhập danh sách các thiết bị từ file text (.txt)
-Xuất danh sách các thiết bị, mỗi thiết bị là một dòng
H -Sắp xếp danh sách thiết bị giảm dần theo giá thành; kết quả sắp xếp xuất ra màn hình và lưu file text
- Sắp xếp danh sách thiết bị tăng dần theo tên; kết quả sắp xếp xuất ra màn hình và lưu file text
O -Tim kiém thiét bj khi biét tén thiét bị
L] -In ra danh sách các thiết bị thuộc nhà sản xuất “Sam Sung”
- Kiểm tra xem danh sách thiết bị có được sấp xếp tăng d3 theo ngày nhập hay không? -In ra danh sách các thiết bị cần thanh lý, biết rằng thiết bị c 3n thanh lý là thiết bị có ngày nhập cách đây 15 năm
L] -In ra danh sách các thiết bị có ngày nhập mới nhất
L] -Tính tổng chỉ phí đã đi tư mua trang thiết bị
Giải thích:
Để xây dựng chương trình quản lý thiết bị tại một công ty, chúng ta c3 sử dụng các hàm và lệnh C++ để thực hiện các yêu cÂi sau:
1 Ham và lệnh để nhập danh sách các thiết bị:
- Xác định cấu trúc dữ liệu cho một thiết bị, bao ø ôn các thuộc tính như Mã thiết bị, Tên thiết bị, Nhà sản xuất, Chức năng, Mô tả, Ngày nhập, Giá thành
- Sử dụng câu lệnh nhập tử bàn phim để lấy thông tin của một thiết bị từ ngươi dùng và lưu vào cấu trúc dữ liệu thiết bị
- Lưu thông tin của các thiết bị vào một danh sách (mảng, vector, hoặc danh sách liên kết)
để quản lý
2 Hàm và lệnh để nhập danh sách các thiết bị từ file text:
member of HungHou EAN
Trang 10- Sử dụng lệnh mở file và đọc file để lấy thông tin của các thiết bị từ file text và lưu vào cấu trúc dữ liệu thiết bị
- Lưu thông tin của các thiết bị vào danh sách đã xây dựng
3 Hàm và lệnh để xuất danh sách các thiết bị:
- Sử dụng câu lệnh xuất ra màn hình để hiển thị thông tin của các thiết bị trong danh sách
- Sử dụng lệnh ghi file để lưu thông tin của các thiết bị vào file text
4 Hàm và lệnh để sắp xếp danh sách thiết bị theo giá thành giảm d3:
- Sử dụng thuật toán sắp xếp như QuickSort hoặc Bubble Sort để sấp xếp danh sách thiết bị theo giá thành giảm d3
- Sau khi sắp xếp, sử dụng lệnh xuất ra màn hình và ghi file để hiển thị kết quả sắp xếp
5 Hàm và lệnh để sắp xếp danh sách thiết bị theo tên tăng d3:
- Sử dụng thuật toán sắp xếp như QuickSort hoặc Bubble Sort để sấp xếp danh sách thiết bị theo tên tăng d3
- Sau khi sắp xếp, sử dụng lệnh xuất ra màn hình và ghi file để hiển thị kết quả sắp xếp
6 Hàm và lệnh để tìm kiếm thiết bị khi biết tên thiết bị:
- Sử dụng lệnh nhập từ bàn phím để lấy tên thiết bị mà người dùng muốn tìm kiếm
- Duyệt qua danh sách các thiết bị và so sánh tên thiết bị
Trang 11PHẦN2_ HIỆN THỰC CHƯƠNG TRÌNH
I Bài tập cá nhân
a Yêucầi
1.Cho biết số lượng các số nguyên dương không chia hết đng thời cho 3 và 8
2.Cho biết trong mảng có bao nhiêu số hoàn thiện
3.Cho biết trong mảng có bao ø Gm tat ca cdc ph % tử là số dương lẻ hay không? 4.Đảo ngược thứ tự các ph tử trong mảng
b Đoạn code thực hiện
for (int 1 = 0; 1 < size; i++) {
if (arrfi] % 3 != 0 && arr[i] % 8 !=0 && arr[i] > 0) {
Trang 12// Hàm đếm số lượng các số hoàn thiện trong mảng
int countPerfectNumbers(int arr[], int size) {
int count = 0;
for (int 1 = 0; 1 < size; i++) {
if (isPerfectNumber(arr[i])) { count++;
} }
return count;
}
// Ham kiém tra xem trong máng có bao ø ôn tất cả các số dương lẻ hay không bool containsAllOddPositiveNumbers(int arr[], int size) {
bool containsAll = true;
for (int 1 = 0; 1 < size; i++) {
if (arr[i] <= 0 Il arr[i] % 2 == 0) { containsAll = false;
break;
} }
return containsAll;
}
/¡ Hàm đảo ngược thứ tự các ph” tử trong mảng
void reverseArray(int arr[], int size) {
for (int 1 = 0; 1 < size/2; i++) {
int temp = arr[i];
Trang 13cout << "Nhap mang: ";
for (int 1 = 0; 1 < size; i++) {
cout << "2 Cho biet trong mang co bao nhieu so hoan thien" << endl;
cout << "3 Cho biet trong mang co bao gom tat ca cac phan tu la so duong le hay khong" << endl;
cout << "4, Dao nguoc thu tu cac phan tu trong mang" << endl;
cout << "0 Thoat" << endl;
cout << " " endl;
cout << "Nhap lua chon cua ban: ";
cin >> choice;
<<
switch (choice) { case |:
cout << "So luong cac so nguyen duong khong chia het dong thoi cho 3 va
8 la: "<< countNumbers(arr, size) << endl;
cout << "Mang khong bao gom tat ca cac phan tu la so duong le" <<
cout << "Mang truoc khi dao nguoc: ";
for (int 1 = 0; 1 < size; i++) { cout << arr[i] << " ";
a
Trang 14}
cout << endl;
reverseArray(arr, size);
cout << "Mang sau khi dao nguoc: ";
for (int 1 = 0; 1 < size; i++) { cout << arr|I] << " ";
biet trong mang co bao gom tat ca cac phan tu la so duong le hay khong nguoc thu tu cac phan tu trong mang
Nhap Lua chon cua ban: 1
So Luong cac so nguyen duong khong chia het dong thoi cho 3 va 8 la:
Trang 15
2 Cho biết trong mảng có bao nhiêu số hoàn thiện
Nhap kich thuoc cua mang: 5
NGUOI THUC HIEN: BUI DUC MINH - 221A010375 biet so Luong cac so nguyen duong khong chia het dong thoi cho 3 va 8 biet trong mang co bao nhieu so hoan thien
biet trong mang co bao gom tat ca cac phan tu la so duong le hay khong nguoc thu tu cac phan tu trong mang
Nhap Lua chon cua ban:
So Luong cac so hoan thien trong mang la: 2
Nhap kich thuoc cua mang: 5
Nhap mang: 1
NGUOI THUC HIEN: BUI DUC MINH —- 221A010375 biet so Luong cac so nguyen duong khong chia het dong th cho 3 va 8 biet trong mang co bao nhieu so hoan thien
biet trong mang co bao gom tat ca cac phan tu La so duong Le hay khong nguoc thu tu cac phan tu trong mang
Nhap Lua chon cua ban: 3
Mang khong bao gom tat ca cac phan tu La so duong Le
Nhap kiỉch thuoc cua mang: 5
Nhap mang: 1
NGUOI THUC HIEN: BUI DUC MINH - 221A010375 biet so Luong cac so nguyen duong khong chia het dong thoi cho 3 va 8 biet trong mang co bao nhieu so hoan thien
biet trong mang co bao gom tat ca cac phan tu la so duong le hay khong Dao nguoc thu tu cac phan tu trong mang
Nhap Lua chon cua ban: 3
Mang bao gom tat ca cac phan tu la so duong le
A member of HungHau Education