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

Báo cáo bài tập lớn môn cơ sở lập trình Đề số 32

29 2 0
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 Cơ Sở Lập Trình Đề Số 32
Tác giả Nguyễn Đăng Hùng
Người hướng dẫn Ths. Mai Thị Thúy
Trường học Trường Đại Học Mở Hà Nội
Chuyên ngành Cơ Sở Lập Trình
Thể loại Báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 29
Dung lượng 1,1 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

** Trình bày thuật toán bao gồm: input - output - process – bộ dữ liệu test thực hiện bài toán Nhập vào một số nguyên n.. ** Viết chương trình nhập vào từ bàn phím n số nguyên và in ra m

Trang 1

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

-BÁO CÁO BÀI TẬP LỚN

MÔN CƠ SỞ LẬP TRÌNH

ĐỀ SỐ 32

Giáo viên HD: Ths Mai Thị Thuý Hà

Sinh viên thực hiện: Nguyễn Đăng Hùng Ngày sinh : 24/04/2004

Mã sinh viên : 23B1001P0162

Lớp: 2310B01

1

Trang 2

Hà Nội, năm 2023 Mục Lục

Table of Contents

Câu 1 ** Trình bày thuật toán (bao gồm: input - output - process – bộ dữ liệu test) thực hiện bài toán Nhập vào một số nguyên n Đếm xem số đó có bao nhiêu chữ số và tính tổng của các chữ số đó Ví dụ: n = 35, Số có 2 chữ số và tổng các chữ số là 3+5 = 8.

Câu 2 ** Viết chương trình in ra trung bình cộng, trung bình nhân của 3 số bất kỳ được nhập vào từ bàn phím.

Câu 3 ** Viết chương trình nhập hai số nguyên từ bàn phím In ra tổng, tích, hiệu và thương của 2 số đó.

Câu 4 ** Viết chương trình nhập vào từ bàn phím n số nguyên và in ra màn hình giá trị lớn nhất trong các số vừa nhập vào (Không sử dụng mảng).

Câu 5 ** Viết hàm liệt kê các ước số của n Viết chương trình nhập số nguyên dương n, gọi hàm trên và cho biết kết quả.

Câu 6 ** Viết hàm thực hiện xóa tất cả những ký tự x nào đó trong chuỗi Viết chương trình nhập vào một chuỗi bất kỳ và ký tự x c ần xóa, gọi hàm trên và in ra kết quả Không sử dụng thư viện có sẵn của C/C++

Câu 7 ** Viết các hàm thực hiện:

o Nhập vào 1 mảng các số nguyên gồm n phần tử (0<=n<=50)

o In ra màn hình 1 mảng các số nguyên

o Đếm số phần tử lẻ trong mảng các số nguyên

o Cho biết giá trị nhỏ nhất của mảng số nguyên

o Tìm kiếm một phần tử x nào đó trong mảng các số nguyên

o Sắp xếp các phần tử của mảng các số nguyên theo thứ tự giảm dần Viết chương trình chính Áp dụng lần lượt các hàm trên

Câu 8 ** Viết các hàm thực hiện công việc sau:

o Nhập ma trận số nguyên kích thước n*m

o Hiện ma trận vừa nhập ra màn hình

o Hiện ra hàng có số lượng phần tử âm nhiều nhất

o Kiểm tra một số chính phương

o Liệt kê vị trí (dạng (i,j)) của các phần tử là số chính phương trong ma trận

o Đếm số lượng phần tử có giá trị bằng phần tử tại vị trí (0,0) của ma trận Viết chương trình chính Áp dụng lần lượt các hàm trên

Câu 9 ** viết các chương trình con thực hiện các công việc sau:

2

Trang 3

o nhập danh sách các sách gồm các thông tin: tên sách, tên tác giả, nhà xuất bản, năm xuất bản và lưu vào tệp sach.dat;

o hiện danh mục sách từ tệp sạch.dat với đầy đủ các thông tin;

o nhập tên sách từ bàn phím, tìm sách vừa nhập và in các thông tin chi tiết ra màn hình;

o thống kê số lượng sách của thập niên 80

o cho biết tên các quyển sách đã xuất bản cách đây 30 năm

Viết chương trình chính để gọi các chương trình con đã được viết theo trật tự như trên Nếu có thể tổ chức chương trình thông qua menu thì sẽ là một điểm cộng.

Câu 10 ** viết các chương trình con thực hiện các công việc sau: o nhập danh sách sinh viên gồm các thông tin: mã sinh viên, tên sinh viên, ngày sinh, giới tính, điểm trung bình; việc nhập sẽ dừng khi nhập mã sinh viên là 0 o hiện danh sách vừa nhập ra màn hình; o sắp xếp danh sách sinh viên theo thứ tự alphabet của tên sinh viên và ghi vào tệp sv.dat (dạng nhị phân); o tìm sinh viên nữ có điểm trung bình thấp nhất o đếm số sinh viên nam Viết chương trình chính để gọi các chương trình con theo trật tự trên Nếu có thể tổ chức chương trình thông qua menu thì sẽ là một điểm cộng.

3

Trang 4

Câu 1: ** Trình bày thuật toán (bao gồm: input - output - process – bộ dữ liệu test) thực hiện bài toán Nhập vào một số nguyên n Đếm xem số đó có bao nhiêu chữ số và tính tổng của các chữ số đó Ví dụ: n = 35, Số có 2 chữ số và tổng các chữ số là 3+5 = 8.

Thuật toán đếm chữ số và tính tổng:

+ Input: Một số nguyên dương n

+ Output: Số chữ số trong n và tổng của các chữ số trong n

+ Process:

Nhập dữ liệu: Nhập số nguyên dương n từ người dùng

Đếm chữ số và tính tổng:

Khởi tạo biến count để đếm số chữ số và biến sum để tính tổng

Lặp qua từng chữ số trong số n cho đến khi n trở thành 0

Lấy chữ số cuối cùng của n bằng cách lấy phần dư n % 10

Cộng chữ số này vào tổng sum

Tăng biến count lên 1

Cắt chữ số cuối cùng của n bằng cách chia n cho 10 và lấy phần nguyên: n =

n / 10

Hiển thị kết quả: Hiển thị số chữ số count và tổng các chữ số sum

Bộ dữ liệu test thực hiện:

3.1 Sơ đồ thuật toán

Bước 1 : Khai báo biến chương trình

Trang 5

- Tính tổng của a, b, c và gán vào biến sum.

- Tính trung bình cộng (average) bằng cách chia tổng cho 3

- Tính trung bình nhân (product) bằng cách nhân a, b, c lại và lấy căn bậc ba.Bước 4 : In ra màn hình kết quả rồi kết thúc

// Bước 4: Hiển thị kết quả

cout << "Trung binh cong cua a, b, c la: " << average << endl;

cout << "Trung binh nhan cua a, b, c la: " << product << endl;

2 4 6 Trung binh cong cua a, b, c la: 4

Trung binh nhan cua a, b, c la: 3.301927

5 10 15 Trung binh cong cua a, b, c la: 10

Trung binh nhan cua a, b, c la: 8.65974

Câu 3: ** Viết chương trình nhập hai số nguyên từ bàn phím In ra tổng, tích,hiệu và thương của 2 số đó.

1 Input: Hai số nguyên a và b

2 Output:

- Tổng của a và b

- Tích của a và b

5

Trang 6

- Hiệu của a và b.

- Thương của a và b

3 Process:

3.1 Sơ đồ thuật toán

Bước 1 : Khai báo biến chương trình

- Tính hiệu a - b và gán vào difference

- Tính thương static_cast<float>(a) / b và gán vào quotient

Bước 4 : In ra tổng, tích, hiệu và thương của a và b

// Bước 4: Hiển thị kết quả

cout << "Tong cua a va b la: " << sum << endl;

cout << "Tich cua a va b la: " << product << endl;

cout << "Hieu cua a va b la: " << difference << endl;

cout << "Thuong cua a va b la: " << quotient << endl;

// Bước 5: Kết thúc

return 0;

6

Trang 7

4 Test:

10 5 Tong cua a va b la: 15

Tich cua a va b la: 50Hieu cua a va b la: 5Thuong cua a va b la: 2

7 3 Tong cua a va b la: 10

Tich cua a va b la: 21Hieu cua a va b la: 4Thuong cua a va b la: 2.33333

Câu 4: ** Viết chương trình nhập vào từ bàn phím n số nguyên và in ra mànhình giá trị lớn nhất trong các số vừa nhập vào (Không sử dụng mảng).

3.1 Sơ đồ thuật toán

Bước 1 : Khai báo biến chương trình

- int n, num, maxNumber;

Bước 2 : Nhập dữ liệu

- Nhập số nguyên dương n từ bàn phím

Bước 3: Tìm giá trị lớn nhất trong các số

- Khởi tạo biến maxNumber bằng giá trị đầu tiên nhập

- Lặp i từ 2 đến n:

- Nhập số nguyên num từ bàn phím

- Nếu num lớn hơn maxNumber, gán maxNumber bằng num

Bước 4 : In ra giá trị lớn nhất trong các số vừa nhập

Trang 8

cout << "Nhap " << n << " so nguyen: ";

// Bước 4: Hiển thị kết quả

cout << "Gia tri lon nhat trong cac so la: " << maxNumber << endl;

Gia tri lon nhat trong cac so la: 20

Câu 5: ** Viết hàm liệt kê các ước số của n Viết chương trình nhập sốnguyên dương n, gọi hàm trên và cho biết kết quả.

1 Input: - Số nguyên dương n

2 Output:

- Các ước số của n

3 Process:

3.1 Sơ đồ thuật toán

Bước 1 : Khai báo biến chương trình

- Khai báo hàm liệt kê ước số void lietKeUocSo(int n);

- Khai báo biến n

Trang 9

// Định nghĩa hàm liệt kê ước số

void lietKeUocSo(int n) {

cout << "Uoc so cua " << n << " la: ";

for (int i = 1; i <= n; i++) {

12 Uoc so cua 12 la: 1 2 3 4 6 12

17 Uoc so cua 17 la: 1 17

Câu 6: ** Viết hàm thực hiện xóa tất cả những ký tự x nào đó trong chuỗi.Viết chương trình nhập vào một chuỗi bất kỳ và ký tự x c ần xóa, gọi hàm trên và in ra kết quả Không sử dụng thư viện có sẵn của C/C++

3.1 Sơ đồ thuật toán

Bước 1 : Khai báo biến chương trình

- char s[100], x;

Bước 2 : Nhập dữ liệu

- Nhập chuỗi ký tự s từ bàn phím

- Nhập ký tự x từ bàn phím

Bước 4: Gọi hàm xóa ký tự trong chuỗi

Duyệt từng ký tự trong chuỗi:

9

Trang 10

- Nếu ký tự khác x, gán ký tự đó vào vị trí của ký tự xóa.

- Kết thúc chuỗi bằng ký tự NULL để đảm bảo kết thúc chuỗi

Bước 5: Hiển thị kết quả

a In ra chuỗi s sau khi xóa ký tự x

3.2 Cài đặt chương trình

#include <iostream>

using namespace std;

// Định nghĩa hàm xóa ký tự

void xoaKyTu(char* str, char x) {

int len = strlen(str);

// Bước 5: Hiển thị kết quả

cout << "Chuoi sau khi xoa ky tu " << x << ": " << s << endl;

1

Trang 11

Câu 7: ** Viết các hàm thực hiện:

o Nhập vào 1 mảng các số nguyên gồm n phần tử (0<=n<=50)

o In ra màn hình 1 mảng các số nguyên

o Đếm số phần tử lẻ trong mảng các số nguyên

o Cho biết giá trị nhỏ nhất của mảng số nguyên

o Tìm kiếm một phần tử x nào đó trong mảng các số nguyên

o Sắp xếp các phần tử của mảng các số nguyên theo thứ tự giảm dần Viết chương trình chính Áp dụng lần lượt các hàm trên

3.1 Sơ đồ thuật toán

Bước 1: Khai báo các hàm thực hiện yêu cầu

- void nhapMang(int arr[], int n);

- void inMang(int arr[], int n);

- int demSoLe(int arr[], int n);

- int giaTriNhoNhat(int arr[], int n);

- bool timKiem(int arr[], int n, int x);

- void sapXepGiamDan(int arr[], int n);

Bước 2: Khai báo biến chương trình

- Gọi hàm timKiem(arr, n, x) để tìm kiếm

- Gọi hàm sapXepGiamDan(arr, n) để sắp xếp mảng giảm dần

Bước 5: Kết thúc

3.2 Cài đặt chương trình

#include <iostream>

1

Trang 12

using namespace std;

// Định nghĩa các hàm

void nhapMang(int arr[], int n) {

cout << "Nhap " << n << " phan tu: ";

for (int i = 0; i < n; i++) {

int giaTriNhoNhat(int arr[], int n) {

int minVal = arr[0];

for (int i = 1; i < n; i++) {

bool timKiem(int arr[], int n, int x) {

for (int i = 0; i < n; i++) {

Trang 13

return false;

}

void sapXepGiamDan(int arr[], int n) {

for (int i = 0; i < n - 1; i++) {

cout << "So phan tu le trong mang: " << demSoLe(arr, n) << endl;

cout << "Gia tri nho nhat trong mang: " << giaTriNhoNhat(arr, n) << endl;

cout << "Nhap gia tri x can tim: ";

Trang 14

Câu 8: ** Viết các hàm thực hiện công việc sau:

o Nhập ma trận số nguyên kích thước n*m

o Hiện ma trận vừa nhập ra màn hình

o Hiện ra hàng có số lượng phần tử âm nhiều nhất

o Kiểm tra một số chính phương

o Liệt kê vị trí (dạng (i,j)) của các phần tử là số chính phương trong ma trận

o Đếm số lượng phần tử có giá trị bằng phần tử tại vị trí (0,0) của ma trận Viết chương trình chính Áp dụng lần lượt các hàm trên

- Hiển thị hàng có số lượng phần tử âm nhiều nhất

- Hiển thị kết quả kiểm tra số chính phương

- Liệt kê vị trí các phần tử là số chính phương

- Số lượng phần tử có giá trị bằng phần tử tại vị trí (0,0) của ma trận

3 Process:

3.1 Sơ đồ thuật toán

Bước 1: Khai báo các hàm thực hiện yêu cầu

- void nhapMaTran(int mat[50][50], int n, int m);

- void inMaTran(int mat[50][50], int n, int m);

- void hienHangAmNhieuNhat(int mat[50][50], int n, int m);

- bool laSoChinhPhuong(int x);

- void lietKeViTriSoChinhPhuong(int mat[50][50], int n, int m);

- int demPhanTuGiaTriBangPhanTuGoc(int mat[50][50], int n, int m);Bước 2: Khai báo biến chương trình

- int n, m, mat[50][50];

Bước 3 : Nhập dữ liệu

- Nhập số hàng n từ bàn phím

1

Trang 15

- Nhập số cột m từ bàn phím.

- Gọi hàm nhapMaTran(mat, n, m)

Bước 4: Gọi và hiển thị kết quả các hàm

a Gọi hàm inMaTran(mat, n, m) để hiển thị ma trận

b Gọi hàm hienHangAmNhieuNhat(mat, n, m) để hiển thị hàng có số lượngphần tử âm nhiều nhất

c Gọi hàm laSoChinhPhuong(x) để kiểm tra số chính phương

d Gọi hàm lietKeViTriSoChinhPhuong(mat, n, m) để liệt kê vị trí các phần tử là

void nhapMaTran(int mat[50][50], int n, int m) {

cout << "Nhap ma tran " << n << "x" << m << ":\n";

for (int i = 0; i < n; i++) {

void inMaTran(int mat[50][50], int n, int m) {

cout << "Ma tran " << n << "x" << m << ":\n";

for (int i = 0; i < n; i++) {

Trang 16

void lietKeViTriSoChinhPhuong(int mat[50][50], int n, int m) {

cout << "Vi tri cac phan tu la so chinh phuong:\n";

for (int i = 0; i < n; i++) {

Trang 17

for (int i = 0; i < n; i++) {

Trang 18

Câu 9: ** viết các chương trình con thực hiện các công việc sau:

o nhập danh sách các sách gồm các thông tin: tên sách, tên tác giả, nhà xuất bản, năm xuất bản và lưu vào tệp sach.dat;

o hiện danh mục sách từ tệp sạch.dat với đầy đủ các thông tin;

o nhập tên sách từ bàn phím, tìm sách vừa nhập và in các thông tin chi tiết ra màn hình;

o thống kê số lượng sách của thập niên 80

o cho biết tên các quyển sách đã xuất bản cách đây 30 năm

Viết chương trình chính để gọi các chương trình con đã được viết theo trật tự như trên Nếu có thể tổ chức chương trình thông qua menu thì sẽ là một điểm cộng.

- Hiển thị thông tin chi tiết về sách cần tìm

- Thống kê số lượng sách của thập niên 80

- Hiển thị tên các quyển sách đã xuất bản cách đây 30 năm

3 Process:

3.1 Sơ đồ thuật toán

Bước 1: Khai báo các chương trình con

Bước 3: Hiển thị menu và chọn chức năng

a Hiển thị menu chức năng:

- 1 Nhap danh sach sach

- 2 Hien danh muc sach

- 3 Tim sach theo ten

- 4 Thong ke so luong sach thap nien 80

1

Trang 19

- 5 Sach xuat ban cach day 30 nam

- 6 Thoat

b Nhập lựa chọn từ người dùng

Bước 4: Thực hiện chương trình con tương ứng với lựa chọn

a Nếu luaChon = 1, gọi nhapSach();

b Nếu luaChon = 2, gọi hienDanhMucSach();

c Nếu luaChon = 3, gọi timSachTheoTen();

d Nếu luaChon = 4, gọi thongKeSachThapNien80();

e Nếu luaChon = 5, gọi sachXuatBanCachDay30Nam();

f Nếu luaChon = 6, thoát khỏi chương trình

cout << "Nhap thong tin sach:\n";

cout << "Ten sach: ";

Trang 20

cout << "Danh muc sach:\n";

for (size_t i = 0; i < danhSachSach.size(); i++) {

const Sach& sach = danhSachSach[i];

cout << "Ten sach: " << sach.tenSach << endl;

cout << "Ten tac gia: " << sach.tenTacGia << endl;

cout << "Nha xuat ban: " << sach.nhaXuatBan << endl;

cout << "Nam xuat ban: " << sach.namXuatBan << endl;

bool timThay = false;

for (size_t i = 0; i < danhSachSach.size(); i++) {

const Sach& sach = danhSachSach[i];

if (sach.tenSach == tenSach) {

cout << "Thong tin chi tiet cua sach:\n";

cout << "Ten sach: " << sach.tenSach << endl;

cout << "Ten tac gia: " << sach.tenTacGia << endl;

cout << "Nha xuat ban: " << sach.nhaXuatBan << endl;

cout << "Nam xuat ban: " << sach.namXuatBan << endl;

Trang 21

}

}

void thongKeSachThapNien80() {

int count = 0;

for (size_t i = 0; i < danhSachSach.size(); i++) {

const Sach& sach = danhSachSach[i];

if (sach.namXuatBan >= 1980 && sach.namXuatBan <= 1989) {

cout << "Cac sach xuat ban cach day 30 nam:\n";

for (size_t i = 0; i < danhSachSach.size(); i++) {

const Sach& sach = danhSachSach[i];

size_t pos2 = line.find(",", pos1);

sach.tenSach = line.substr(pos1, pos2 - pos1);

pos1 = pos2 + 1;

pos2 = line.find(",", pos1);

sach.tenTacGia = line.substr(pos1, pos2 - pos1);

pos1 = pos2 + 1;

pos2 = line.find(",", pos1);

sach.nhaXuatBan = line.substr(pos1, pos2 - pos1);

Ngày đăng: 03/05/2025, 12:53

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm