1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo bài tập lớn môn học lập trình c++ nâng

26 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo cáo bài tập lớn môn học lập trình c++ nâng cao
Tác giả Bùi Đức Minh
Người hướng dẫn GVHD: Đinh Thị Tâm
Trường học Trường Đại Học Văn Hiến
Chuyên ngành Lập trình C++ nâng cao
Thể loại Báo cáo
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 26
Dung lượng 1,51 MB

Nội dung

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 1

BỘ 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 2

PHAN 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 3

PHẦ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 4

t

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 5

cout << "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 6

3 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 7

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

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 8

int 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 9

IL 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 11

PHẦ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 13

cout << "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

Ngày đăng: 12/02/2025, 16:17

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN