Bài tập Kỹ thuật lập trình - Lab 4: Cấu trúc điều khiển lặp - Khoa Khoa học và Kỹ thuật máy tính - Đại học BK - ĐHQG TP Hồ Chí Minh

1 MỤC TIÊU CỦA BÀI THỰC HÀNH
 Hiểu và vận dụng các cấu trúc điều khiển lặp để giải quyết trọn vẹn 1 bài
toán hay một phần các bài toán có cần đến dạng cấu trúc này
 Luyện kỹ năng giải quyết vấn đề thông qua quá trình phân rã bài toán thành
các công việc con được lặp đi lặp lại
pdf 11 trang xuanthi 27/12/2022 1600
Bạn đang xem tài liệu "Bài tập Kỹ thuật lập trình - Lab 4: Cấu trúc điều khiển lặp - Khoa Khoa học và Kỹ thuật máy tính - Đại học BK - ĐHQG TP Hồ Chí Minh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_tap_ky_thuat_lap_trinh_lab_4_cau_truc_dieu_khien_lap_kho.pdf

Nội dung text: Bài tập Kỹ thuật lập trình - Lab 4: Cấu trúc điều khiển lặp - Khoa Khoa học và Kỹ thuật máy tính - Đại học BK - ĐHQG TP Hồ Chí Minh

  1. TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG TPHCM Khoa Khoa học và Kỹ thuật Máy tính b) In ra số N Hướng dẫn: a) Dữ liệu: Số N nguyên dương: (có thể) sử dụng kiểu unsigned long b) Giải thuật: . Vì việc nhập n thực hiện trước quá trình lặp gợi ý sử dụng cấu trúc do while . Việc kiểm tra n nguyên dương là kiều kiện thoát khỏi vòng lặp. Câu 3: Viết chương trình cho phép: a) Nhập số N (nguyên dương), nhập cho đến khi đúng thì thôi. b) Tính tổng bình phương của các số lẻ từ 1 đến N bằng cách lặp In ra N và kết quả - chọn cách in cho thẩm mỹ Hướng dẫn: a) Dữ liệu: chương trình phải có biến (ô nhớ) để chứa các dữ liệu sau đây: Biến lưu số n nguyên dương: (có thể) sử dụng unsigned long Biến lưu tổng bình phương: (có thể) sử dụng unsigned long long b) Giải thuật: 2
  2. TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG TPHCM Khoa Khoa học và Kỹ thuật Máy tính b) Giải thuật: . Tham khảo them hàm rand() để lấy giá trị số nguyên dương ngẫu nhiên từ 0 đến RAND_MAX Câu 5: Viết chương trình cho phép: a) Nhập số N (nguyên dương), nhập cho đến khi đúng thì thôi. b) Sinh ra N con số ngẫu nhiên các con số thực biểu diễn điểm hệ 10 c) Tính trung bình của các điểm sinh ra ở trên d) In ra N và kết quả - chọn cách in cho thẩm mỹ Hướng dẫn: a) Dữ liệu: chương trình nên có biến (ô nhớ) chứa các kiểu dữ liệu sau đây: Biến chứa số nguyên dương bất kì cho người dùng nhập vào: kiểu dữ liệu 4
  3. TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG TPHCM Khoa Khoa học và Kỹ thuật Máy tính Hướng dẫn: a) Dữ liệu: Ta cần một biến N để biểu diễn độ dài một cạnh của tam giác cần in và chiều cao H của tam giác. b) Giải thuật: Nhận thấy số dòng phải in chính là chiều cao của tam giác, dựa vào N chúng ta có thể tính được độ dài đường cao H. Điều này cho ta biết rằng ta có thể sử dụng vòng lặp để in ra từng dòng cho tam giác. Vì chúng ta đã biết được số lần lặp cố định dựa vào kích thước cạnh tam giác, vòng lặp for sẽ thích hợp trong trường hợp này. Quan sát tam giác cân đặc, dòng đầu tiên, kí tự chính giữa sẽ là dấu ‘*’ cách một khoảng so với lề là N/2-1 khoảng trắng, các kí tự ‘*’ dòng 2 sẽ cách lề N/2-2 khoảng trắng, tương tự cho các dòng tiếp theo. Và độ dài một dòng được biểu diễn bằng số dấu ‘*’ sẽ tăng đều từ 1, 3, 5, đến N. Sinh viên có thể sử dụng hàm setw kết hợp với 2 vòng lặp lồng nhau để in ra tam giác đặc. Với trường hợp tam giác rỗng. Mỗi hàng trừ hàng đầu tiên và hàng cuối cùng thì chỉ có 2 ký tự ‘*’. Hàng đầu tiên chỉ có một ký tự ‘*’ và hàng cuối cùng sẽ có N ký tự ‘*’. Trong trường hợp này ta chỉ cần sử dụng một vòng lặp để in ra phần thân tam giác, mỗi hàng in 2 kí tự ‘*’ sao cho đúng vị trí, hàng trên cùng và hàng dưới cùng sẽ xử lý riêng. Sử dụng quan sát đối với tam giác đặc phía trên và hàm setw để hoàn chỉnh bài in tam giác rỗng. Câu 8: Viết chương trình tính số hạng thứ n của dãy Fibonaci F(0) = 1 F(1) = 1 6
  4. TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG TPHCM Khoa Khoa học và Kỹ thuật Máy tính Để tính sin(x) ta cần cộng tích lũy các phần tử bằng cách dùng vòng lặp, mỗi lần lặp ta sẽ tính giá trị phần tử và cộng tiếp vào biến kết quả. Vòng lặp sẽ dừng khi giá trị của phần tử đủ nhỏ (so sánh với epsilon). Ta nhận thấy rằng giá trị của epsilon càng nhỏ thì độ chính xác tính toán xấp xỉ của ta càng cao. Mỗi phần tử cần tính toán các thành phần sau: A = x2n+1 B = (2n + 1)! C = (-1)n Phần tử = C * A / B Tổng tất cả các phần tử ở mỗi lần lặp chính là sin(x) cần tính. Lưu ý: góc x trong công thức đơn vị là radian, vì vậy sinh viên cần đổi x từ radian sang đơn vị độ trước khi tiến hành các vòng lặp tính toán. Câu 10: Viết chương trình tính các hàm khác trong trong slide bài giảng: cos(x), tan(x), log(x) Hướng dẫn: Hàm cos(x) và ln(x) có thể được xấp xỉ theo Taylor: a) Dữ liệu: x là số thực, vì vậy ta có thể chọn kiểu dữ liệu cho nó là: float hoặc double. b) Giải thuật: Sinh viên tiến hành phân tích tương tự như câu 10 để tính toán các các toán hạng / phần tử ở mỗi lần lặp. 8
  5. TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG TPHCM Khoa Khoa học và Kỹ thuật Máy tính Ví dụ cụ thể cho giải thuật: Đa thức cần tính: 3x2 + 4x + 5 Người dùng nhập: 3 4 5 Người dùng nhập x = 2 Khởi động p_x = 0 Lần lặp 1: Đọc hệ số // coeff = 3 p_x = p_x*x + coeff // p_x = 0*2 + 3 = 3 Lần lặp 2: Đọc hệ số // coeff = 4 p_x = p_x*x + coeff // p_x = 3*2 + 4 = 10 Lần lặp 3: Đọc hệ số // coeff = 5 p_x = p_x*x + coeff // p_x = 10*2 + 5 = 25 Ta tính được giá trị cần tìm là p_x = 25 Câu 12: Viết chương trình có chức năng (a) In ra các menu sau và dòng hướng dẫn lựa chọn như sau: 1. Nhập hàng hoá 2. Tìm hàng hoá 3. In ra danh sách hàng hoá 4. Xoá hàng hoá 5. Cập nhật hàng hoá 6. Lưu dữ liệu 7. Tải dữ liệu 8. Thoát Hãy chọn chức năng: (b) Đọc menu được chọn từ người dùng. Nếu người dùng nhập sai thì phải xoá màn hình và cho nhập lại, đến khi nhập đúng. 10